0

我正在使用一对一的关联,但它不起作用。可能是因为表中的列名不同。

我有 2 张桌子。1) USER_DC 和 2)USER

在 USER 中,主键是 - “ID”

在 USER_DC 中,有一个 fereign 键,但名称是:“USER_ID”

需要帮助,我该如何定义一对一的关系?

In User.hbm.xml

<hibernate-mapping>
 <class name="com.test.User" table="USER">
 <cache usage="read-write"/>
    <id name="id" column="ID" type="java.lang.Long" length="10">
      <generator class="native">
        <param name="sequence">USER_SEQ</param>
      </generator>
    </id>
:
:

In userDC.hbm.xml

:
:
<one-to-one name="user" class="com.test.User"></one-to-one>
<one-to-one name="dc" class="com.test.DC"></one-to-one>

这没用

4

1 回答 1

1

我对一对一映射的理解是,主键从具有一对一的实体传播到目标实体 - 因此在您的情况下,它希望将 id 从 UserDC 传播到 User。这不是您定义数据库表的方式。

我认为您想要映射它的方式是使用具有唯一约束的多对一。

在 UserDC.hbm.xml 中,您将拥有以下内容:

<many-to-one name="user" class="com.test.User" column="USER_ID" unique="true"/>

您的数据库是否强制多个 UserDC 行不能具有相同的 UserDC.USER_ID 值的一对一约束?否则,您没有一对一,而是多对一。

希望这可以帮助。

莎拉

于 2013-09-27T02:03:01.870 回答