我的模型(InheritanceType.JOINED):

class Parent{...}
class Child1 extends Parent{...}
class Child2 extends Parent{...}
class Child3 extends Parent{...}
class Child4 extends Parent{...}
class Agg{
  List<Parent> l;
}

Agg通过连接表与父级连接。父级没有Agg对象。

我正在对Child2进行一些过滤,即:
“从Child2 ch2所在的ch2.field1 = ... ch2.field2 = ...等。”

现在如何在不导致与所有子类表联接的情况下将Child2与Agg联接。
我只想只与Child2表联接(不与Child2,Child3,Child4联接)

我试图使用'class'属性(即ch2.class = ...),结果是正确的,但是生成的查询包含对每个子类的连接; /

HQL“来自Agg a Join a.l”还与所有子类(甚至与ch2.class一起)

谢谢!

最佳答案

您可以使用交叉联接来解决此问题,因为DBMS仍将优化为内部联接。像这样的SELECT ch2, agg FROM Child2 ch2, Agg agg WHERE ch2.joinField = agg.id AND ch2.field1 =... AND ch2.field2 =...

09-27 22:56