我有两张桌子
TableA
,TableB
在hbm.xml中定义了多对一关系
示例:
表A
由于单向关系(仅TableA
至TableB
)TableB
hbm.xml
中与TableA
无关的条目
现在的问题是,TableA
可能包含columnIDFromTableA
的 null 值,当我查询TableA
时,这些行也应该与来自TableB,但它不起作用。
我的查询是:
select column1, column2, tableA.tableB.someColumn from TableA tableA left outer join tableA.tableB as tabB where column1 Like '%someval%'
以上查询返回ZERO行。
一旦从查询中删除与tableB相关的列(在本例中为tableA.tableB.someColumn),我就会得到预期的结果
select column1, column2 from TableA tableA left outer join tableA.tableB as tabB where column1 Like '%someval%'
以上查询返回预期结果。
任何帮助都将不胜感激。
答案 0 :(得分: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%'