我如何通过Jpa Specification获取tiket及其类别的列表
示例模型:
@Entity
@Table(name = "tickets")
public class Ticket {
@Id
private Integer id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "category_id")
private Category
}
服务方式:
public Page<Ticket> findAll(Pageable pageable) {
return ticketRepository.findAll((root, query, cb) -> {
root.join("category");
return query.getRestriction();
}, pageable);
}
最佳答案
我渴望通过使用获取而不是联接来加载集合。
public Page<Ticket> findAll(Pageable pageable) {
return ticketRepository.findAll((root, query, cb) -> {
root.fetch("category");
return query.getRestriction();
}, pageable);
}
提取方法将使用默认的联接类型(内部)。如果要加载没有类别的票证,则必须传递
JoinType.LEFT
作为第二个参数。