通过自动执行内部联接来订购

时间:2017-12-12 22:27:51

标签: mysql sql database hibernate hql

我希望我的查询,使用hql,返回一些列排序的值。

问题是当我order by它自动进行内连接时。 例如:

表Usuario有列idAssociado:

select u.nome 
from Usuario u
order by u.associado desc,
         u.associado.suspended asc, 
         u.associado.dateOut asc

我想返回Usuario的所有记录,即使列associado(id)为null,但是首先带来那些非null,然后按suspend和dateOut排序。

当我order by suspended and dateOut时,它会执行内部联接并仅返回Usuarios where u.associado is not null

如何使用预期结果执行此hql?

由于

1 个答案:

答案 0 :(得分:1)

如果您班级中的财产位于POJO对象中,

HQL会执行INNER JOIN操作。

在您的Usuario课程中,您可能拥有类型为associado的媒体Associado

因此,当您指向associado对象的封装属性时,HQL应用INNER JOIN。

如果你想在associado为null时想要所有usuario对象,你为什么要在关联中输入有关封装信息的信息?

对我来说,你的查询将成为:

select u.nome 
from Usuario u
where u.associado is null