2013-01-14 37 views
4

當前的代碼:的EclipseLink延長JOIN子句

CriteriaQuery criteriaQuery = cb.createQuery(MinutisPreke.class); 
Root<MinutisPreke> from = criteriaQuery.from(MinutisPreke.class); 
Join<LankomumasDiena, MinutisPreke> ld = from.join("lankomumasDiena", JoinType.LEFT); 
cb.and(cb.equal(ld.get("intervalas"), 7)); 

生成以下查詢:

SELECT COUNT(t0.pr_id) FROM preke AS t0 
LEFT OUTER JOIN lankomumas AS t1 
ON (t1.pr_id = t0.pr_id) 
WHERE (t1.intervalas = 7) 

如何添加語句中LEFT OUTER JOIN 使用條件查詢所以我條款代碼將生成此查詢:

SELECT COUNT(t0.pr_id) FROM preke AS t0 
LEFT OUTER JOIN lankomumas AS t1 
ON (t1.pr_id = t0.pr_id) AND (t1.intervalas = 7) 

編輯1: 如果你沒有看到在第一和第二querys任何差異,請閱讀此線程: SQL join: where clause vs. on clause

回答

2

的EclipseLink在2.5加入了對ON子句支持夜間生成如下所述: https://bugs.eclipse.org/bugs/show_bug.cgi?id=367452 但它不是JPA規範的一部分,所以你需要轉換到加入的EclipseLink的org.eclipse.persistence.internal.jpa.querydef.JoinImpl

((JoinImpl)ld).on(cb.and(cb.equal(ld.get("intervalas"), 7)); 
+0

是可以安全使用的每日構建? – Minutis