2017-02-18 6 views
0

私の質問を読んでいただきありがとうございます。 私はHibernateを使い慣れていないので、多くのエンティティ(Annotaionを使用)で1つのエンティティを使用したいと考えています。私は私の問題をGoogleにしようとしましたが、答えはまだ見つかりませんでした。Hibernateのエンティティ間でエンティティを共有する

住所(ID_Address、州、郡、区)

ハウス(ID_House、電話番号、ID_Address)

スタッフ(ID_Staff:

例は、私はいくつかのエンティティを持っています、名前、ID_Address)

ゲスト(ID_Guest、Email、ID_Address)

アドレステーブルに1つのレコードが必要なのは、おそらくHouseやStaff、Guestにしか属しません。

私は約一対一の関係をthinkedが、その方法は、私の住所エンティティはまたはプライベートお客様のゲストプライベートハウス家または民間スタッフのスタッフを宣言する必要がありますか?これを行うための他の方法はありますか、または私は何かを逃したでしょうか?

+0

*そのようにして私のアドレスエンティティはプライベートHouse house *を宣言しなければなりません。*:いいえ、それは間違っています。ドキュメントを読む:http://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/Hibernate_User_Guide.html#associations-one-to-one –

答えて

1

ほとんどの場合、エンティティの関係は「親子」と考えるべきです。時々、子供はその親について知っていて、それ以外は知りません。

アドレスは、親エンティティについて知る必要はありません。つまり、アドレスエンティティから親に行く必要はなく、アドレスから取得する必要がありますハウス、スタッフ、ゲストなどの親エンティティ

この場合、@OneToOneの関係を親からアドレスエンティティに宣言するだけで、Addressの親への参照はありません。このようにして、Hibernateは親テーブル内のアドレスIDを使用してAddressテーブルを指す列を使用します。

@Embeddable@Embeddedを使用することをお勧めします。埋め込み可能なものは単に「価値オブジェクト」であり、エンティティとはみなされません。埋め込み可能なデータは、「親エンティティ」と同じテーブルに格納することも、独自のテーブルに格納することもできます。

こちらがお役に立てば幸いです。

+0

ありがとう:D – NPT0612

関連する問題