まず、Hibernate - One table with multiple entities? を読みました。.
ただし、2 つのエンティティを同じテーブルにマップしたいのですが、両方を選択できるエンティティにしたいと考えています。私が意味したのは:
- 1 つのテーブル: Person (id、name、dateOfBirth、city、street、zipcode)。
- 2 つのエンティティ: Person (id、name、dateOfBirth)、Address (id、city、street、zipcode)。
したがって、エンティティ間の 1:1 の関係ですが、DB には 1 つのテーブルがあります。
上記のリンクで提案されたソリューション (コンポーネント キーワード) を使用してそれを行うと、Address を直接クエリすることはできません (Person エンティティを介してアクセスできます)。そしてできるようになりたい
session.createCriteria(Adres.class)
それ、どうやったら出来るの?
更新: アドレス マッピングで、エンティティ間の 1 対 1 の関連付けを試みました。
<one-to-one name="Person " class="model_mapowanie_xml.Person "/>
およびイン パーソン マッピング:
<one-to-one name="Address" class="model_mapowanie_xml.Address "/>
どちらのクラスにも、もう一方を参照するフィールドがあります。そのためには、レコードの選択がうまく機能します。ただし、両方のエンティティを使用して 1 つのトランザクションにレコードを追加するにはどうすればよいですか? (ID は db によって生成されます)
Address ad = new Address();
ad.setProperty("Sydney");
Person p = new Person();
p.setProperty("John");
p.setAddress(ad);
session.save(p);
Person 部分のみが保存され、address プロパティは空のままです。