无法确定实体的类型

时间:2014-01-29 21:06:39

标签: java hibernate jpa orm

我有两个班级:

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映射不会这样做。因此,检查类级别的每个字段 - 在我的情况下,可能会有一个未映射的抽象类引用。

2 个答案:

答案 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 或
  • 将ClassA声明为MappedSuperClass:这是我推荐的方式,因为似乎ClassA没有嵌入ID。