2013-08-19 17 views
2

假設我有一個JPQL查詢是這樣的:JPQL LEFT JOIN:是否針對所有成員評估集合成員變量條件?

SELECT p 
    FROM Parent p 
    LEFT OUTER JOIN p.children child 
WHERE p.children IS EMPTY 
    OR child.x = 'y' 

我想在以下任何一種情況下返回Parent實例:

  • Parent有沒有孩子
  • Parent至少有一個孩子,其x等於y

根據JPA規範,上面的查詢應該做我想要的嗎?或者我必須拖出EXISTS和子查詢以及IN機器?

+0

爲什麼不添加一些日誌記錄並自己找出它? – perissf

+0

你好;謝謝你的評論。我對規範定義的行爲感興趣,而不是特定於實現的行爲。 –

回答

0

是的,無論JPA執行情況如何,您的查詢都會執行您想要的操作。就我個人而言,我不認爲有任何疑問,儘管我可以感覺到你不喜歡:表children可能會加入兩次。但是在我的恕我直言,JPA實現應該做兩個數據庫查詢,如果需要爲了返回正確的數據。