我知道有一些关于这个的帖子,但他们大约一年没有回应。实际上,我们使用的是 Hibernate 4.2.1.Final 而不是 PostgreSQL 8.4。我们有两个这样的实体
实体 A(顶级层次类)
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@Polymorphism(type = PolymorphismType.EXPLICIT)
public class A {
@Id
@GeneratedValue
private Long id;
public A() {
}
public A(Long id) {
super();
this.id = id;
}
// Setters, getteres, hashCode and equals
}
实体 B(子类)
@Entity
public class B extends A{
String value;
public B(){
}
public B(String value) {
super();
this.value = value;
}
public B(Long id, String value) {
super(id);
this.value = value;
}
// Setters, getteres, hashCode and equals
}
如您所见,一个实体被注释PolymorphismType.EXPLICIT
但在获取顶级类时
ArrayList<A> lista = (ArrayList<A>) session.createCriteria(A.class).list();
我们也通过该String value
属性获得了 B 子类。事实上,SQL 语句包含left outer join B
. 这仍然是 Hibernate 第四版中的错误还是我做错了什么?
此致