2016-04-15 78 views
0

我對HQL相對較新。我注意到的一點是,當你添加返回字段時,它可以返回更少的結果。當添加了返回字段時,HQL查詢返回的結果更少

例如,如果我運行下面的查詢:

select cit.noun.value, 
cit.type 
from ComponentInventoryType cit 
where 
cit.deleted = false 

我得到更多的結果比我運行此查詢:

select cit.noun.value, 
cit.type, 
cit.suffixes.suffix 
from ComponentInventoryType cit 
where 
cit.deleted = false 

,當然還有兩個查詢之間的唯一區別是cit.suffixes.suffix字段的添加。

我的第一個猜測是,如果後綴本身對於任何條目都是空的 - 它根本不返回條目?

如果是這樣的話 - 有什麼辦法可以解決這個問題嗎?這個字段是空的或空的 - 而不是跳過整個條目?

在此先感謝。

回答

0

在您的域不等於空 後綴您可以將檢查!= NULL

2

通過添加cit.suffixes.suffix,你已經從ComponentInventoryType表連接到後綴表。我猜你已經在包含後綴的集合周圍映射了@OneToMany註釋。

從SQL的角度來看,如果對錶B的連接失敗,那麼從表A到列X的直接連接將不會返回A的行(即,表B中沒有包含索引列的行表A)。

在SQL本地語言中,這是JOIN或NATURAL JOIN情況(取決於您想要通過的術語)。

在基本SQL中,可以使用OUTER JOIN或LEFT OUTER JOIN來允許連接的表(B)爲零。

實際上,如果添加後綴,如果它是一對多的關係,我也可以在上面得到更多的行。所以如果在A中每行有n個後綴,那麼你會有n * sizeof(A)行。