springboot JPA 一對多關聯查詢 ,動態復雜查詢 去除重復數據 in語句使用
阿新 • • 發佈:2018-08-26
query pri predicate list cat cut 單向 查詢 group 目的:根據圖書的發布地區查詢圖書信息
實現步驟:
1 實體配置
one: 圖書信息 book
many: 地區信息 bookarea
實體映射,單向映射 book 中增加 area 的集合 並設置 @JoinColumn(name="bookid")
@OneToMany
bookarea中不需要設置關系
實現步驟:
1 實體配置
one: 圖書信息 book
many: 地區信息 bookarea
實體映射,單向映射 book 中增加 area 的集合 並設置 @JoinColumn(name="bookid")
@OneToMany
bookarea中不需要設置關系
-
編寫查詢語句
Repository 繼承 JpaSpecificationExecutor
重寫findAll 並實現 Specification接口的 public Predicate toPredicate(Root<Book> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder)方法
Join<Book,BookArea> areaJoin = root.join("bookAreaList",JoinType.LEFT);
ps: bookAreaList 為 book 實體中的 OneToMany 屬性3 根據地區編碼查詢,可選擇多個地區編碼,我們需要使用到in 語句處理
In<Object> in = criteriaBuilder.in(areaJoin.get("areaCode"));
areaCode 為 bookarea 實體中的 屬性。 -
多表查詢需要過對一下重復數據,使用 group by
總結完畢
springboot JPA 一對多關聯查詢 ,動態復雜查詢 去除重復數據 in語句使用