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

use*_*581 4 hibernate hbm pojo hibernate-mapping

嗨,我正在尝试映射这个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... */
  } 
Run Code Online (Sandbox Code Playgroud)

我的目的是创建一个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>
Run Code Online (Sandbox Code Playgroud)

但它给了我这个错误:

   [java] Initial SessionFactory creation failed.org.hibernate.MappingException: An association from the table RENT refers to an unmapped class: com.project.domain.Employee
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?感谢您的帮助.

我还映射了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"/>
Run Code Online (Sandbox Code Playgroud)

[编辑]作为请求,我添加了文件 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>
Run Code Online (Sandbox Code Playgroud)

小智 10

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


Pau*_* Lo 8

我能想到两种可能性:

(1)你的类名Employee.hbm.xml是不是完全限定类名

(2)你没有声明所有的映射资源hibernate.cfg.xml.

您可能需要提供更多的信息,比如Employee.hbm.xmlhibernate.cfg.xml除了Rent.hbm.xml为我们检查.