Hibernate HQL-仅与一个子类联接
我的模型(InheritanceType.JOINED):Hibernate HQL-仅与一个子类联接,hibernate,inheritance,hql,Hibernate,Inheritance,Hql,我的模型(InheritanceType.JOINED): 类父项{…} 类Child1扩展了父{…} 类Child2扩展了父{…} 类Child3扩展了父{…} 类Child4扩展了父{…} 类Agg{ 清单l; } Agg通过联接表与父级连接。父对象没有Agg对象 我正在对Child2进行一些过滤,即: “来自Child2 ch2,其中ch2.field1=…ch2.field2=…等。” 我现在如何使用Agg连接Child2,而不导致连接所有子类表。 我只想使用Child2表连接(不使用
类父项{…}
类Child1扩展了父{…}
类Child2扩展了父{…}
类Child3扩展了父{…}
类Child4扩展了父{…}
类Agg{
清单l;
}
Agg通过联接表与父级连接。父对象没有Agg对象
我正在对Child2进行一些过滤,即:
“来自Child2 ch2,其中ch2.field1=…ch2.field2=…等。”
我现在如何使用Agg连接Child2,而不导致连接所有子类表。
我只想使用Child2表连接(不使用Child2、Child3、Child4连接)
我试图使用'class'属性(即ch2.class=…)结果是正确的,但生成的查询包含每个子类的联接;/
HQL“From Agg a Join a.l”还与所有子类(甚至与ch2.class)连接
谢谢 您可以使用交叉连接来解决此问题,因为DBMS无论如何都会将其优化为内部连接。类似这样的
从Child2中选择ch2,agg ch2,agg agg,其中ch2.joinField=agg.id和ch2.field1=。。。而ch2.field2=…
可能是您在Agg类的列表中有一个“急切”的加载,导致了这种情况。当您与父类进行连接时,您将有这种行为(因此,我从不在Hibernate中使用继承)。你能提供更多的细节吗,比如所有类的映射?
class Parent{...}
class Child1 extends Parent{...}
class Child2 extends Parent{...}
class Child3 extends Parent{...}
class Child4 extends Parent{...}
class Agg{
List<Parent> l;
}