gpt4 book ai didi

java - OneToOne 的mappedBy 行为很奇怪

转载 作者:行者123 更新时间:2023-12-02 11:30:06 25 4
gpt4 key购买 nike

为什么双向 OneToOne 关系在以下情况下表现得有点奇怪?:

  1. 我使用相同反向实体创建 2 个所有者方实体
  2. 再次运行应用程序时,我找到第二个所有者侧实体(使用 EntityManager),然后然后到达反面对象
  3. 此时,如果我通过反面对象的引用到达所有者对象,我将获得第一个所有者(附图有帮助)

enter image description here

这些实体没什么特别的:

  • 员工包含:

    @OneToOne(级联 = CascadeType.ALL)
    私有(private)人;

  • 当 Person 包含:

    @OneToOne(mappedBy="person")
    私有(private)员工员工;

这对我来说似乎很困惑,具有误导性。这可能是一个错误,还是程序员必须知道它们的可能性?

最佳答案

为什么您要为两个不同的员工重用同一个Person?这不再是 OneToOne 关系。

顺便说一句,我怀疑后面发生了什么,Hibernate 执行以下查询:

 SELECT e FROM employee e WHERE person_id = ?

在这种情况下,结果集将包含两行,Hibernate 将仅使用第一行,当然在这种情况下顺序是未定义的(取决于您使用的数据库)。

您可以通过启用 SQL 日志记录来仔细检查这一点。

关于java - OneToOne 的mappedBy 行为很奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49352030/

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