0

私は2つのテーブルを持っています

TableATableB hbm.xmlで定義された多対1の関係

例:

TableA

一方向の関係(TableAにのみ)に関連するTableBエントリがないためTableB hbm.xmlTableA

問題は、null値が含まれTableAている可能性があり、クエリを実行すると、これらの行もTableBの一致する行とは別に表示されるはずですが、機能していません。columnIDFromTableATableA

私が持っているクエリは次のとおりです。

select column1, column2, tableA.tableB.someColumn from TableA tableA left outer join tableA.tableB as tabB where column1  Like '%someval%' 

上記のクエリはゼロ行を返します。

tableBに関連する列(この場合はtableA.tableB.someColumn)をクエリから削除するとすぐに、期待どおりの結果が得られます。

select column1, column2 from TableA tableA left outer join tableA.tableB as tabB where column1  Like '%someval%' 

上記のクエリは期待される結果を返します。

どんな助けでもいただければ幸いです。

4

1 に答える 1

1

あなたがするとき

tableA.tableB.someColumn

、テーブル間に暗黙の内部結合を作成します。

テーブル間にはすでに左外部結合があります。

from TableA tableA left outer join tableA.tableB as tabB

したがって、この左結合エンティティに割り当てたエイリアスを使用する必要があります。

select column1, column2, tabB.someColumn 
from TableA tableA 
left outer join tableA.tableB as tabB 
where column1  Like '%someval%'

補足:エイリアスを体系的に使用すると、クエリがはるかに読みやすくなります。

select tableA.column1, tableA.column2, tableB.someColumn 
from TableA tableA 
left outer join tableA.tableB as tableB 
where tableA.column1 like '%someval%'
于 2012-12-13T22:26:18.253 に答える