我有以下关系:
class A
{
id;
}
class B extends A
{
//other fields...
}
class C
{
A a;
}
我想写这样的HQL:
select b from B as b left join C c on c.a.id = b.id.
但是我得到了一个org.hibernate.hql.ast.QuerySyntaxException:期望加入的路径!
在这种情况下,左连接对我很重要。我尝试使用子选择,但存在性能问题。
请帮帮我:)。
答案 0 :(得分:1)
使用从C到A的右连接,并使用特殊属性 .class 进行过滤,仅从B中选择项目。
select a from C as c right join c.a as a
with a.class = 'B'
来自Hibernate Core Reference Manual:
特殊属性
class
访问a的鉴别器值 在多态持久性的情况下的实例。 Java类名 嵌入在where子句中将被转换为其鉴别器 值。