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