我有两个班级:
public ClassAEntity extends ClassA {
private Long id;
@Override
public void doSomething() {
// do something
}
}
public abstract ClassA {
public abstract void doSomething();
}
包含以下内容的JPA ORM文件:
<entity class="ClassAEntity" access="FIELD">
<attributes>
<id name="id">
<column name="seqid" />
<generated-value strategy="IDENTITY" />
</id>
</attributes>
</entity>
然而在初始化期间,我收到以下错误:
引起:org.hibernate.MappingException:无法确定类型 for:com.example.ClassA,at table:ClassAEntity,for columns: [org.hibernate.mapping.Column(CLASSA)]
但是没有这样的专栏!这有什么问题?我不能只为我的实体提供抽象类吗?
终于解决了: 请记住,使用JPA映射(ORM xmls)会使持久性尝试默认映射实体的所有字段,而hibernate映射不会这样做。因此,检查类级别的每个字段 - 在我的情况下,可能会有一个未映射的抽象类引用。
答案 0 :(得分:0)
我的朋友请在实体级别和字段级别应用,所有正确的注释和hibernate的映射,如一对一,多对一。然后重新运行它并返回更新
you can refer this site as well
http://www.springbyexample.org/examples/one-to-many-jpa-hibernate-config-jpa-entity-config.html
答案 1 :(得分:0)
你可以
Entity
声明ClassA
或MappedSuperClass
:这是我推荐的方式,因为似乎ClassA没有嵌入ID。