给定以下类型层次结构:
@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”添加条件?