在 Hibernate 中的实体之间共享实体
Sharing enity among entities in Hibernate
感谢您阅读我的问题。
我是 Hibernate 的新手,我想在许多实体中使用 1 个实体(使用 Annotaion)。我确实尝试 google 我的问题,但仍未找到答案。
例如,我有一些实体:
地址(ID_Address,省,区,区)
房子(ID_House, Phone, ID_Address)
工作人员(ID_Staff, 姓名, ID_Address)
访客(ID_Guest, 电子邮件, ID_Address)
我想要地址 table 中的一条记录只属于房屋、员工或客人。
我考虑过一对一关系,但那样的话我的地址实体必须声明 private House house 或 private Staff staff还是 private Guest guest?有没有其他方法可以做到这一点,或者我错过了什么?
在大多数情况下,您应该将实体关系视为 "parent-child"。有时 child 知道它的 parent,有时它不知道。
在你的情况下,Address 不需要知道它的 parent 实体,这意味着你不需要访问 parent 从地址实体,您只需要从 parent 实体(如 House、Staff 或 Guest)获取 Address。
在这种情况下,只需声明从 parent 到 Address 实体的 @OneToOne
关系,而不是对来自 Address 的 parent 的任何引用。这样,Hibernate 将使用 parent table 中的一个列,该列使用地址 ID 指向地址 table。
您也可以考虑使用 @Embeddable
和 @Embedded
。可嵌入物只是 "value objects",它们不被视为实体。可嵌入项可以存储在与 "parent entity" 相同的 table 中,也可以存储在它们自己的 table.
中
希望对您有所帮助。
感谢您阅读我的问题。 我是 Hibernate 的新手,我想在许多实体中使用 1 个实体(使用 Annotaion)。我确实尝试 google 我的问题,但仍未找到答案。
例如,我有一些实体:
地址(ID_Address,省,区,区)
房子(ID_House, Phone, ID_Address)
工作人员(ID_Staff, 姓名, ID_Address)
访客(ID_Guest, 电子邮件, ID_Address)
我想要地址 table 中的一条记录只属于房屋、员工或客人。
我考虑过一对一关系,但那样的话我的地址实体必须声明 private House house 或 private Staff staff还是 private Guest guest?有没有其他方法可以做到这一点,或者我错过了什么?
在大多数情况下,您应该将实体关系视为 "parent-child"。有时 child 知道它的 parent,有时它不知道。
在你的情况下,Address 不需要知道它的 parent 实体,这意味着你不需要访问 parent 从地址实体,您只需要从 parent 实体(如 House、Staff 或 Guest)获取 Address。
在这种情况下,只需声明从 parent 到 Address 实体的 @OneToOne
关系,而不是对来自 Address 的 parent 的任何引用。这样,Hibernate 将使用 parent table 中的一个列,该列使用地址 ID 指向地址 table。
您也可以考虑使用 @Embeddable
和 @Embedded
。可嵌入物只是 "value objects",它们不被视为实体。可嵌入项可以存储在与 "parent entity" 相同的 table 中,也可以存储在它们自己的 table.
希望对您有所帮助。