たとえば、次の 2 つのエンティティを見てみましょう。
街 :
<class name="City" table="city">
<id name="id" column="id"/>
<property name="city_name" column="city_name"/>
<property name="country_name" column="country_name"/>
</class>
人 :
<class name="Person" table="person">
<id name="id" column="id"/>
<property name="name" column="name"/>
<many-to-one cascade="save-update" name="city" column="city_id" class="City"/>
</class>
City.equals()
実装は、とが同じtrue
場合に戻ります。city_name
coutry_name
Person
1回のセッションで2つ保存した場合:
Person person1 = new Person("Peter");
Person person2 = new Person("John");
City city1 = new City("Paris", "France");
City city2 = new City("Paris", "France");
person1.setCity(city1);
person2.setCity(city2);
session.save(person1);
session.save(person2);
Hibernate は次のレコードを生成します。
街 :
| id | name | city_id |
-------------------------
| 1 | Peter | 1 |
| 2 | John | 2 |
人 :
| id | city_name | country_name |
----------------------------------
| 1 | Paris | France |
| 2 | Paris | France |
しかし、Hibernatecity_id
にperson
whenで同じものを再利用するように指示できcityX.equals(cityY)
ますか?
編集 :
city1
をと同じインスタンスにすることはできないことを明確にする必要がありましcity2
た。簡潔にするために、私が直面している問題をすべて説明することはできません。実際のケースでは、テーブルに重複要素が含まれる可能性があります。特定の要素をグループ化してスペースを節約しようとしています。ありがとうございました!