0

我有两张桌子

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

例子:

表A

因为单向关系(仅TableATableB)没有TableB hbm.xml与相关的条目TableA

现在的问题是,TableA可能有空columnIDFromTableA当我查询时TableA,这些行也应该显示除了来自 TableB 的匹配行之外,但它不起作用。

我的查询是:

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 回答