如你-6ren">
gpt4 book ai didi

java - hibernate的 "property-ref"元素标签中的 "one-to-one"属性有什么作用?

转载 作者:行者123 更新时间:2023-12-01 12:01:04 25 4
gpt4 key购买 nike

我有两个类 Employee 和 Project,我正在建立一对一的关系,并且它可以在没有 property-ref 的情况下工作,请参见下文:

<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 列仍然填充有员工 ID(主键),我希望它将填充有项目 ID(主键),如定义所示(在中突出显示)大胆的)。请解释一下出了什么问题,当我添加或不添加此属性引用时,我看不出有什么区别?为什么它处于 hibernate 状态?请我等待答复。

最佳答案

but still EMP_ID column in project table is populated with the Employee ID(primary key). I was expecting it will be populated with Project ID(primary key) as the definition says (highlighted in bold).

Project.EMP_ID 应使用 Employee.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 关联的哪一侧是拥有一侧(最常见的是子一侧)。

关于java - hibernate的 "property-ref"元素标签中的 "one-to-one"属性有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27978327/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com