我如何通过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作为第二个参数。

10-08 20:11