HQL离开了不相关实体的连接

Man*_*uPK 45 java hibernate hql left-join

我有2个实体,AB.它们是相关的,但我不想将关系映射添加到bean.

我们如何使用左外之间的连接AB使用HQL或标准

有一些可用的解决方法,

  1. 使用Native SQL,如此处所述.
  2. 添加关系并使用从左侧连接ab中选择a.
  3. 我们可以在HQL中进行内连接,如a a,B b中的select*,其中a.some = b.some

我总是回过头来看这2个选项,还有其他选择吗?或者这不可能?

Ken*_*han 57

目前,使用HQL加入where子句中不相关类的t​​heta-style仅支持内连接.

请求用于支持外连接这样的情况是目前的3次最投票增强 ,但我不认为,因为它需要这个功能将在不久的功能来实现重新执行现有的基于鹿角查询分析器的第一这似乎是IMO的一项巨大任务.

如果您坚持使用HQL执行左连接而不添加A和B之间的关系,则可以使用选项3先执行内连接,然后使用以下HQL

from A a where a.some not in ( select b.some from B)
Run Code Online (Sandbox Code Playgroud)

找出所有无法加入B的A并以编程方式组合结果.

更新

从版本5.1.0开始,HHH-16(不相关类的显式连接)是固定的,我们应该能够加入不相关的实体.