2017-02-18 61 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