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,導致關聯查詢時取不出數據