2013-01-20 29 views
3

我試圖從數據庫使用標準構建器檢索數據。它工作得很好,查詢幾乎是完美的...差不多。不幸的是,Java不希望我使用group by或distinct作爲我的查詢結果。如何讓Java只檢索唯一記錄?我的代碼是在這裏:JPQL:內部加入組通過

List<Documentation> documentationList = new ArrayList<>(); 
DatabaseConnector dc = new DatabaseConnector(); 
List<Predicate> criteria = new ArrayList<Predicate>(); 
EntityManager em = dc.getEntityManager(); 
CriteriaBuilder builder = em.getCriteriaBuilder(); 

CriteriaQuery<Documentation> select = builder.createQuery(Documentation.class); 
Root<Documentation> u = select.from(Documentation.class); 
Join<Documentation, DocumentationUser> du = u.join("documentationUserCollection",  JoinType.INNER); 

javax.persistence.Query q = em.createQuery(select); 
select.groupBy(u.<String>get("documentationId")); 
select.distinct(true); 

documentationList = q.setMaxResults(pageSize).setFirstResult(first).getResultList(); 

回答

2

嘗試更換2號線降低創建查詢行:

select.groupBy(u.<String>get("documentationId")); 
select.distinct(true); 

javax.persistence.Query q = em.createQuery(select); 
+0

令人驚訝它的工作!明顯的解決方案是最難看的解決方案;)謝謝! – J33nn

+0

歡迎光臨!我很高興它的工作 – perissf