我有一个where子句,其条件如下:
a.system(+) = 'Test'
我正在尝试使用join
将其转换为hibernateleft join a where a.system = 'Test' or a.system = null
然而,当a.system ='测试'时,此转换仅返回数据。或者a.system = null,它不再是外连接。
对此有正确的解决方法吗?
答案 0 :(得分:0)
使用左连接你只需要加入连接条件。在下面的示例中,您将获得表a中具有表b的匹配字段的所有行,并且当b中没有匹配的行时为null。
select *
from a left join b on a.field = b.field and b.system = 'Test'
如果您发布完整的查询,将会更清楚。
答案 1 :(得分:0)
要进一步解释,您始终join two tables
或result set
或“视图”就像一张桌子。你在这里'TEST'是一个常数。您在ANSI中的等效查询看起来像:
FROM table_a a
LEFT JOIN table_b b
ON a.column = b.column
AND b.system = 'TEST'