一尘不染

HQL左无关实体的加入

hibernate

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

我们如何 在 HQL或条件之间A``B使用 左外部 联接 使用它们

有一些解决方法,

  1. 按照此处所述使用本机SQL 。
  2. 添加关系并使用 从A选择a a左连接ab
  3. 我们可以在HQL中进行 内部 联接,例如从A a,B b中选择*,其中a.some = b.some

我一直回头看这两个选项,这还有其他选择吗?还是这不可能?


阅读 271

收藏
2020-06-20

共1个答案

一尘不染

当前,使用HQL在where子句中连接不相关类的t​​heta样式仅支持内部连接。

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

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

from A a where a.some not in ( select b.some from B)

找出所有无法加入B的A并以程序方式合并结果。

更新资料

从5.1.0版开始,HHH-16(不相关类的显式连接)已修复,我们应该能够连接不相关的实体。

2020-06-20