Specification多表关联查询

Specification<Product> specification = Specifications.<Product>and()
                /*.eq("code", "001")*/
                .predicate(((root, query, cb) -> {
                    Join<Product, Brand> connection1 = root.join("brand", JoinType.INNER);
                    Predicate p1 = cb.equal(connection1.get("name"), "aa");
//                    Join<Product, Category> connection2 = root.join("category", JoinType.INNER);
//                    return cb.equal(connection1.get("name"), "adidas");
                    return cb.and(p1);
                }))
                .build();


坑:在对应实体类上加载策略:

fetch=FetchType.EAGER

如果是EAGER,那么表示取出这条数据时,它关联的数据也同时取出放入内存中

fetch = FetchType.LAZY

如果是LAZY,那么取出这条数据时,它关联的数据并不取出来,在同一个session中,什么时候要用,就什么时候取(再次访问数据库)。

因为我加了fetch = FetchType.LAZY,导致关联查询时取不出数据

 

 

 

posted @ 2020-07-08 10:17  路要一步一步走  阅读(4671)  评论(0编辑  收藏  举报