没有显示多个到一个具有空值的单向行

时间:2012-12-13 22:16:18

标签: hibernate java-ee jpa

我有两张桌子

TableATableB在hbm.xml中定义了多对一关系

示例:

表A

由于单向关系(仅TableATableBTableB 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%' 

以上查询返回预期结果。

任何帮助都将不胜感激。

1 个答案:

答案 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%'