失败的hibernate映射:表X中的关联指的是未映射的类Y.

时间:2013-10-28 11:16:35

标签: hibernate hibernate-mapping pojo hbm

您好我正在尝试映射这个pojo Rent类来创建他的hibernate映射文件。

Rent.java(POJO):

  public class Rent implements Serializable {

     private static final long serialVersionUID = 1L;

       Employee employee;
       Client client;
       Car car;

    /* + getter and setter... */
  } 

我的目的是创建一个web应用程序,用户可以设置哪个员工已经将汽车租给了客户。所以这是我尝试过的实现

Rent.hbm.xml

<hibernate-mapping>
  <class name="com.google.musicstore.domain.Rent" table="RENT">
    <id name="id" column="RENT_ID">
       <generator class="native"/>
    </id>
    <one-to-one name="car"  class="com.project.domain.Car"
       cascade="save-update">
    </one-to-one>
    <one-to-one name="client"  class="com.project.domain.Client"
       cascade="save-update">
    </one-to-one>
    <many-to-one name="employee"  class="com.project.domain.Employee"
       cascade="save-update">
    </many-to-one>
  </class>
</hibernate-mapping>

但它给了我这个错误:

   [java] Initial SessionFactory creation failed.org.hibernate.MappingException: An association from the table RENT refers to an unmapped class: com.project.domain.Employee

我做错了什么?谢谢你的帮助。

我还映射了 hibernate.cfg.xml 中的所有实体:

    <mapping resource="com/project/carRentalAgency/domain/Employee.hbm.xml"/>
    <mapping resource="com/project/carRentalAgency/domain/Client.hbm.xml"/>
    <mapping resource="com/project/carRentalAgency/domain/Car.hbm.xml"/>
    <mapping resource="com/project/carRentalAgency/domain/Rent.hbm.xml"/>

[编辑]作为请求,我添加了文件 Employee.hbm.xml

   <hibernate-mapping>
       <class name="com.project.carRentalAgency.domain.Employee" table="EMPLOYEE">
            <id name="id" type="long" access="field">
                <column name="ID" />
                <generator class="increment" />
            </id>
            <property name="name" type="java.lang.String" access="field">
                <column name="EMPLOYEE_NAME" />
           </property>
           <property name="surname" type="java.lang.String">
                <column name="EMPLOYEE_SURNAME" />
           </property>
           <property name="username" type="java.lang.String">
                <column name="EMPLOYEE_USERNAME" />
           </property>
           <property name="password" type="java.lang.String">
                <column name="EMPLOYEE_PASSWORD" />
           </property>

      </class>
   </hibernate-mapping>

2 个答案:

答案 0 :(得分:9)

我发现通常会发生此错误,因为hibernate文件classname.hbm.xml属性的Build Action未设置为Embedded Resource。

答案 1 :(得分:8)

我能想到两种可能性:

(1)Employee.hbm.xml中的班级名称不是完全限定的班级名称

(2)您没有在hibernate.cfg.xml中声明所有地图资源。

除了Employee.hbm.xml之外,您可能还需要提供hibernate.cfg.xmlRent.hbm.xml等更多信息供我们查看。