【问题标题】:one to one mapping on different column names不同列名上的一对一映射
【发布时间】:2015-03-12 01:10:31
【问题描述】:

我有两个不同的表,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_idEmployee 表和 id 来自 Persons 表的映射?

注意: id of Persons table 是主键

【问题讨论】:

    标签: xml hibernate mapping one-to-one


    【解决方案1】:

    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"/>
    

    如果您可以修改将persons表“id”列引用为person_id的employee表中的emp_ID列(外键列),这将更容易理解并且不会让其他人感到困惑

    员工表:

    重命名emp_ID --> person_id

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-28
      • 2015-01-02
      • 1970-01-01
      • 2015-02-06
      • 1970-01-01
      • 1970-01-01
      • 2017-11-19
      • 1970-01-01
      相关资源
      最近更新 更多