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,导致关联查询时取不出数据

 

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM