2017-01-27 22 views
1

我有一個JPA查詢一個問題:JPA如果已存在/加入

SELECT DISTINCT p FROM Product p INNER JOIN p.shopCategories sc WHERE EXISTS (SELECT DISTINCT sc2 FROM Customer c INNER JOIN c.shopCategories as sc2 WHERE c.customerId=7) 

結果應該是隻具有其中的客戶已經預訂的那家商店類別商店類別的網頁上。

產品< - > ShopCategory < - >客戶

但結果是與其中任何ShopCategory存在的所有產品的列表。

任何想法如何改善查詢?

回答

0

我會一路剛剛加入到客戶

SELECT DISTINCT p 
FROM Product p 
    INNER JOIN p.shopCategories sc 
    INNER JOIN sc.customer c 
WHERE c.customerId = 7 

如果你有,當然你ShopCategories實體雙向映射。

更新

使用EXISTS,我認爲你需要內部查詢與母公司關聯一個:

SELECT DISTINCT p FROM Product p INNER JOIN p.shopCategories sc 
WHERE EXISTS (SELECT DISTINCT sc2 FROM Customer c INNER JOIN c.shopCategories as sc2 WHERE c.customerId=7 and sc = sc2) 
+0

可悲的是,沒有雙向的關係。任何其他想法? – Stack