2013-05-29 46 views
0

我有以下類的類之間的連接無論是業主還是受讓人都可以使用。JPA具有相同類型的兩個領域

我想這一點,幾乎工作,但似乎是回到某種笛卡爾結果:

String query = "SELECT r FROM models.Entity r LEFT JOIN r.assignees a LEFT JOIN r.owners n "; 
query += "WHERE a.id = 1 OR n.id = 1"; 

誰能告訴我什麼,我做錯了什麼?

回答

0

如果UserAccount是在業主和受讓人,好像查詢將複製的結果,你可以使用DISTINCT過濾重複的結果:

SELECT DISTINCT r FROM ... 
0

當有UserAccount的實例已可用於過濾的結果, MEMBER OF表達可用於:

SELECT DISTINCT(e) 
FROM SomeEntity e 
WHERE :someUser MEMBER OF e.assignees OR 
     :someUser MEMBER OF e.owners 

UserAccount ua ... 
em.createQuery(jpql).setParameter("someUser", ua) 

由於某種原因查詢類似於原始查詢如果是優選的,然後加入DISTINCT就足夠了。

相關問題