我正在使用一对一的关联,但它不起作用。可能是因为列名在表中不相同。
我有两张桌子。 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>
不起作用
答案 0 :(得分: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的相同值?否则,你没有一对一,而是多对一。
希望这有帮助。
萨拉