我可以使用 JPA 为多个 parents 使用 @MapsId 共享一个 one-to-one 实体吗
Can I share a one-to-one entity using @MapsId for multiple parents using JPA
我阅读了一些关于如何使用 @MapsId
映射 @OneToOne
关系的最佳实践
而且我想知道,如果实体是 "shared",它会起作用吗?
例如...
Employee has Address OneToOne...
Department has Address OneToOne...
我们这里可以使用相同的方法吗?或 EMPLOYEES 和 DEPARTMENTS 表应具有 fk_address_id ?
我应该通过接口处理这个问题吗HasAddress
?
它会起作用,但共享是在父子之间,而不是在父子之间。因此,Employee
将使用自己的 Address
行,而 Department
将使用不同的行。
但是,如果您想分享,这不是 @OneToOne
关系。这是一个 @ManyToOne
,因为 Address
可以是父实体,而 Employee
和 Department
是子实体。在这种情况下,Employee
和 Department
都将使用 FK 列作为 Address
PK。
因此,如果要共享 Address
行,这是一个多对一的关联。如果不这样做,则可以在 Address
实体上使用 @MapsId
一对一,在 Department
和 Employee
上使用 mappedBy
。
我阅读了一些关于如何使用 @MapsId
@OneToOne
关系的最佳实践
而且我想知道,如果实体是 "shared",它会起作用吗?
例如...
Employee has Address OneToOne...
Department has Address OneToOne...
我们这里可以使用相同的方法吗?或 EMPLOYEES 和 DEPARTMENTS 表应具有 fk_address_id ?
我应该通过接口处理这个问题吗HasAddress
?
它会起作用,但共享是在父子之间,而不是在父子之间。因此,Employee
将使用自己的 Address
行,而 Department
将使用不同的行。
但是,如果您想分享,这不是 @OneToOne
关系。这是一个 @ManyToOne
,因为 Address
可以是父实体,而 Employee
和 Department
是子实体。在这种情况下,Employee
和 Department
都将使用 FK 列作为 Address
PK。
因此,如果要共享 Address
行,这是一个多对一的关联。如果不这样做,则可以在 Address
实体上使用 @MapsId
一对一,在 Department
和 Employee
上使用 mappedBy
。