OneToOne 的 mappedBy 行为怪异

OneToOne's mappedBy behaves weird

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

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

实体没什么特别的:

这让我感到困惑,具有误导性。这可能是一个错误,还是程序员 必须 了解它们的可能性?

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

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

 SELECT e FROM employee e WHERE person_id = ?

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

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