我有一个表链接到另一个带有外键字段的表,字段本身可以为空。这意味着第一个表中的行可能会或可能不会在另一个表中具有相应的行。
为简单起见,我们将第一个表Foo
和第二个Bar
命名为。
现在,当我从Foo
查询行并尝试按照Bar
中的字段对它们进行排序时,这样:
FROM Foo ORDER BY Bar.name
结果仅显示来自Foo
的这些值,其中字段bar_id
不为空。还有Foo
中包含Bar
中没有相应行的这些行的最佳方法是什么。
目前我有一个庞大而草率的方法,它从filterMap和sortMap获取值并将它们附加到StringBuffer
,从而产生HQL查询。
我听说过有关Criteria API的内容,但不知道它是否可以帮助我度过这种情况。
答案 0 :(得分:1)
您只需要进行左连接而不是内连接:
select foo from Foo foo left join foo.bar bar order by bar.name