我有两个班级员工和项目,我正在做一对一的关系,而且它没有属性 - 请参阅下面的内容:
<one-to-one name="project" class="com.hibernate.practice.entitytype.Project" <!--property-ref="employee"--> cascade="save-update"> </one-to-one>
你可以看到我已经评论了property-ref
我定义的项目(类)映射文件的另一面:
<many-to-one name="employee" class="com.hibernate.practice.entitytype.Employee" column="EMP_ID" unique="true" ></many-to-one>
现在的定义是什么: property-ref(可选):连接到此外键的关联类的属性的名称。如果未指定,则使用关联类的主键。
我没有指定“property-ref”,但是项目表中的EMP_ID列仍然填充了Employee ID(主键)我希望它将填充项目ID(主键),如定义所示(突出显示在胆大)。 请解释有什么问题,当我添加它或不添加此属性-ref时,我看不出有什么区别? 为什么它处于休眠状态?我在等我回答。
答案 0 :(得分:1)
但是项目表中的EMP_ID列仍然填充了 员工ID(主键)。我原以为它会填满 项目ID(主键)如定义所示(以粗体突出显示)。
应使用Employee.ID填充Project.EMP_ID。这就是外键的工作方式。
我不确定为什么你希望Project.EMP_ID指向Project.ID。
如果项目和员工don't share the primary key:
<one-to-one name="person" class="Person"/>
<one-to-one name="employee" class="Employee" constrained="true"/>
您需要将property-ref
用于方向关联的反面:
<one-to-one name="employee" class="Employee" property-ref="person"/>
在第二个示例中,子表中只有一个FK指向父表。在这种情况下,你需要指示Hibernate关联的哪一方是拥有者(通常它是孩子的一方)。