2016-04-15 9 views
0

私は比較的新しいHQLです。私が気付いていることは、リターンフィールドを追加すると結果が少なくなることです。HQLクエリは、返されるフィールドが追加されたときに結果が少なくなります

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

そしてもちろんの2つのクエリ間の唯一の違いは次のとおりです。

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

私はこのクエリを実行する場合よりも多くの結果を得る:私は次のクエリを実行した場合たとえば

、 cit.suffixes.suffixフィールドの追加。

私が最初に推測しておいたのは、サフィックス自体がいずれのエントリでもnullの場合、エントリはまったく返されません。

この場合、エントリ全体をスキップするのではなく、フィールドを空白またはヌルにする方法がありますか?

ありがとうございます。

答えて

0

あなたのフィールドが サフィックスをゼロに等しくない場合あなたがチェックを追加することができます!= nullを

2

cit.suffixes.suffixを追加することにより、あなたは接尾辞テーブルにComponentInventoryTypeテーブルから参加してきました。私はあなたが@OneToManyアノテーションを接尾辞を含むセットの周りにマッピングしたことを推測しています。

SQLの観点から、列Xの表Aから表Bへの直線結合は、表Bへの結合が失敗した場合(つまり、表Bの索引列がテーブルA)。

SQLの場合、これはJOINまたはNATURAL JOINの状況です(使用する用語によって異なります)。

基本SQLでは、OUTER JOINまたはLEFT OUTER JOINを使用して、結合テーブル(B)をNULLにすることができます。

実際には、上記のように1対多の関係であれば、接尾辞を追加するとさらに多くの行を得ることができます。したがって、Aの各行にn個の接尾辞がある場合、n * sizeof(A)の行があります。

関連する問題