我可以使用 JPA 为多个 parents 使用 @MapsId 共享一个 one-to-one 实体吗

Can I share a one-to-one entity using @MapsId for multiple parents using JPA

我阅读了一些关于如何使用 @MapsId

映射 @OneToOne 关系的最佳实践

Like this

而且我想知道,如果实体是 "shared",它会起作用吗?

例如...

Employee has Address OneToOne...
Department has Address OneToOne...

我们这里可以使用相同的方法吗?或 EMPLOYEES 和 DEPARTMENTS 表应具有 fk_address_id ?

我应该通过接口处理这个问题吗HasAddress

它会起作用,但共享是在父子之间,而不是在父子之间。因此,Employee 将使用自己的 Address 行,而 Department 将使用不同的行。

但是,如果您想分享,这不是 @OneToOne 关系。这是一个 @ManyToOne,因为 Address 可以是父实体,而 EmployeeDepartment 是子实体。在这种情况下,EmployeeDepartment 都将使用 FK 列作为 Address PK。

因此,如果要共享 Address 行,这是一个多对一的关联。如果不这样做,则可以在 Address 实体上使用 @MapsId 一对一,在 DepartmentEmployee 上使用 mappedBy