Hibernate 具有空值的多对一单向行未显示

Hibernate 具有空值的多对一单向行未显示,hibernate,jakarta-ee,jpa,Hibernate,Jakarta Ee,Jpa,我有两张桌子 TableA,TableB,在hbm.xml中定义了多对一关系 例如: 表 由于单向关系(仅TableA到TableB),因此TableBhbm.xml中没有与TableA相关的条目 现在的问题是,TableA的columnIDFromTableA可能有null值,当我查询TableA时,这些行除了与TableB中的行相匹配之外也应该显示出来,但它不起作用 我的问题是: select column1, column2, tableA.tableB.someColumn from

我有两张桌子

TableA
TableB
,在hbm.xml中定义了多对一关系

例如:

由于单向关系(仅
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%' 
上面的查询返回零行

一旦我从查询中删除与tableB相关的列(在本例中为tableA.tableB.someColumn),我就会得到预期的结果

select column1, column2 from TableA tableA left outer join tableA.tableB as tabB where column1  Like '%someval%' 
上面的查询返回预期结果

如果您有任何帮助,我们将不胜感激。

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

感谢您的快速回答(坦率地说,您是我在键入问题时想到的那个人),很抱歉使用alias。让我试试你的建议。看来这就是问题所在。可能你需要把这个作为答案。通过使用对象关联而不是关联实体别名,人们可能会经常犯这种错误。我正在进一步测试,但我得到了一些关于如何继续的线索。谢谢你的时间和帮助。以我的经验,那没用。我一直在回答关于Hibernate和JPA的无数问题(通常都是相同的),这些问题在官方文档或javadoc中得到了回答。很遗憾,许多程序员不能阅读文档,或者太懒了。