2015-12-11 21 views
2

我有以下SQL返回13個結果JPA/JPQL返回與其中xy爲空或不完整的結果XYZ = 1

SELECT * 
FROM AAA a 
JOIN BBB b ON b.id = a.b_id 
LEFT JOIN CCC c ON c.id = b.c_id 
LEFT JOIN DDD d ON d.id = c.d_id 
WHERE b.c_id IS NULL 
OR d.status = 1 

而繼JPQL返回3個結果

SELECT a 
FROM AAA a 
WHERE a.b.c IS NULL 

而繼JPQL返回10結果

SELECT a 
FROM AAA a 
WHERE a.b.c.d.status = 1 

但是,下面的JPQL返回10個結果,缺少3個空結果。

SELECT a 
FROM AAA a 
WHERE a.b.c IS NULL 
OR a.b.c.d.status = 1 

我在想什麼?我在哪裏開始調試?

+2

a.b.c.d生成(隱含的)**內部**連接 –

+0

並且也缺少實際查看那些JPQL生成的SQL –

回答

0

從哪裏開始調試?

如果您不確定您的ORM,請調整日誌級別,以便您可以看到生成的SQL查詢或直接檢查數據庫日誌。

我錯過了什麼?

條件WHERE a.b.c.d.status = 1強制jpa提供程序爲路徑中的所有表(BBB,CCC,DDD)創建內連接。這中和OR條件a.b.c IS NULL

相關問題