感谢您阅读我的问题。 我是Hibernate的新手,我想在许多实体中使用1个实体(使用Annotaion)。我确实试图谷歌我的问题,但仍然没有找到答案。
示例,我有一些实体:
地址(ID_Address,省,区,区)
众议院(ID_House,电话,ID_Address)
员工(ID_Staff,姓名,ID_Address)
访客(ID_Guest,电子邮件,ID_Address)
我希望地址表中的一条记录只属于House或Staff或Guest。
我想到了一对一的关系,但这样我的地址实体必须声明私人住宅或私人员工或私人访客< / strong>?有没有其他方法可以做到这一点,或者我错过了什么?
答案 0 :(得分:1)
在大多数情况下,您应该将实体关系视为“父子”。有时孩子知道它的父母,有时则不知道。
听起来在你的情况下,地址不需要知道它的父实体,这意味着你不需要从地址实体到达父实体,你只需要从家庭实体获取地址,例如House,Staff或Guest。
在这种情况下,只需声明从父实体到地址实体的@OneToOne
关系,并且不要对地址中的父项进行任何引用。这样,Hibernate将使用父表中使用地址ID指向Address表的列。
您也可以考虑使用@Embeddable
和@Embedded
。嵌入式只是“价值对象”,它们不被视为实体。 Embeddables可以与“父实体”存储在同一个表中,也可以存储在自己的表中。
我希望这会有所帮助。