【发布时间】:2013-05-16 10:15:25
【问题描述】:
给定以下类型层次结构:
@Entity
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
class A { }
@Entity
class B extends A {
String b;
}
@Entity
class C extends A {
String c;
}
@Entity
class D {
@ManyToOne
A a;
}
现在我想用 C 类型的 'a' 查询所有 D 类型的记录,并且字段 'c' 等于给定的字符串参数:
...
Root<D> root
CriteriaBuilder cb
cb.equal(root.get("a").get("c").as(String.class), "Test");
...
可以预见,我会收到一个异常,告诉我属性“c”是未知的,因为它没有在超类型 A 中定义。
任何想法,如何告诉 JPA Query 它应该只在 D 处为字段“a”加入 C 并向字段“c”添加条件?
【问题讨论】:
标签: hibernate jpa polymorphism polymorphic-associations criteria-api