2017-02-18 64 views
0

感谢您阅读我的问题。 我是Hibernate的新手,我想在许多实体中使用1个实体(使用Annotaion)。我确实试图谷歌我的问题,但仍然没有找到答案。在Hibernate中实体之间共享实体

例子,我有一些实体:

地址(ID_Address,省,区,沃德)

(ID_House,电话,ID_Address)

人员(ID_Staff ,Name,ID_Address)

Guest(ID_Guest,Email,ID_Address)

我想要地址表中的一条记录只属于可能是房屋或员工或访客。

我鑫卡特约一比一的关系,但这种方式我的地址实体必须声明私人住宅房子私人工作人员的工作人员私人住客?有没有其他的方式来做到这一点,或者我错过了什么?

+0

*这种方式我的地址实体必须声明私人房子*:不,这是不正确的。阅读文档:http://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/Hibernate_User_Guide.html#associations-one-to-one –

回答

1

在大多数情况下,您应该将实体关系视为“亲子”。有时孩子知道父母,有时孩子不知道。

这听起来像你的情况,地址并不需要知道它的母公司,这意味着你不需要去从地址实体父,你只需要得到从地址一个父母实体,比如众议院,工作人员或访客。

在这种情况下,只需声明一个从Parent到Address实体的@OneToOne关系,并且不会从Address中引用父级。这样,Hibernate将在父表中使用指向地址表的地址表中的一列。

您也可以考虑使用@Embeddable@Embedded。嵌入式仅仅是“价值对象”,它们不被视为实体。嵌入式可以存储在与“父实体”相同的表中,也可以存储在自己的表中。

我希望这会有所帮助。

+0

非常感谢:D – NPT0612