不同列名称上的一对一映射

时间:2015-01-13 22:52:18

标签: xml hibernate mapping one-to-one

我有两个不同的表,Person表和Employee表。我需要在这两者之间进行一对一的映射。 Employee表格emp_id参考Person表格id。我需要一些帮助来编写映射xml。

person.hbm.xml:

<hibernate-mapping>
  <class name="Persons" table="Persons">
    <id name="id" column="id" type="java.lang.Integer">
      <generator class="native"></generator>
    </id>
    <property name="firstName" column="FIRST_NAME" type="java.lang.String">
    </property>
    <one-to-many name="employee" column="per_id" unique="true" class="Persons"
      not-null="true"/>
  </class>
</hibernate-mapping>

employee.hbm.xml

<hibernate-mapping>
  <class name="Employee" table="Employee">
    <id name="id" column="id" type="java.lang.Integer">
      <generator class="native"></generator>
    </id>
    <property name="name_id" column="NAME_ID" type="java.lang.String">
    </property>
    <property name="emp_id" column="emp_ID" type="java.lang.String">
    </property>
  </class>
</hibernate-mapping>

如何从emp_id表格中EmployeeidPersons编写映射?

注意:id表的{/ em> Persons是主键

1 个答案:

答案 0 :(得分:0)

employee.hbm.xml

<many-to-one name="person" class="Persons" column="emp_ID" />

要使关系双向,您可以在person.hbm.xml中添加以下内容:

<one-to-one name="employee" class="Employee" property-ref="person"/>

如果您可以修改员工表中引用人员表&#34; id&#34;的emp_ID列(foriegn key列),那将更容易理解并且不会让其他人感到困惑。列到person_id

员工表:

重命名emp_ID - &gt;为person_id