document.write("");

qudsl 一对多,串联查询 单向一对一查询

前提:

已知A表,B表,且 A表一对多B表

查询B表数据的同时,同步关联的A表数据

1. A表的实体类中:

    @OneToMany(mappedBy = "b", fetch = FetchType.LAZY)
    @JsonIgnore
    private Set<B> bs = new HashSet<>();

2. B表的实体类中:

    @QueryInit("*.*.*.*")
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "关联的字段,例如a_id")
    private A a;

3. 在B表的repository interface中,添加EntityGraph

    @Override
    @EntityGraph(attributePaths = {"a"})
    Page<B> findAll(Predicate predicate, Pageable pageable);

备注:如果在查询过程中,使用了BooleanBuilder,QXXX q = QXXX.xxx;动态构建查询条件,则注意在Repository中,extends QuerydslPredicateExecutor

public interface xxRepository extends JpaRepository<C, String> {
}

public interface xxRepository extends JpaRepository<B, String>, QuerydslPredicateExecutor<B> {

 

单向一对一查询

前提:

C表对D表单向一对一查询C表数据的同时,关联D表数据

1. C表的实体类中:

    @OneToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "关联的字段,例如d_id")
    private D d;

2. 在C表的repository interface中,添加EntityGraph

    @EntityGraph(attributePaths = {"d"})
    List<C> findByXXX(long id);

 

 

posted @ 2024-09-23 14:08  人间春风意  阅读(15)  评论(0编辑  收藏  举报