让我们以这两个实体为例:
城市 :
<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
在一个会话中保存两个:
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
什么时候重用它cityX.equals(cityY)
吗?
编辑 :
我应该澄清city1
不能与city2
. 为简洁起见,我无法描述我面临的全部问题。在实际情况下,表格可以包含重复元素,我只是想通过对一些特定元素进行分组来节省一些空间。谢谢!