我今天发现了这个问题,还没有找到任何解决方案,我现在正在学习如何使用休眠,所以我会尽力解释这种情况。
我有一个非常简单的课程:
public class Descripcion {
private long id;
private String descripcion;
private AuxTitularidad titularidad = new AuxTitularidad();
private AuxTitularidad titularidad2 = new AuxTitularidad();
//getters and setters below... all of them auto-generated
}
这是我的映射文件
<class name="Descripcion" table="DESCRIPCION">
<id name="id" type="long" column="id">
<generator class="identity"></generator>
</id>
<property name="descripcion" column="descripcion"/>
<many-to-one name="titularidad" class="AuxTitularidad" column="id_titularidad1" />
<many-to-one name="titularidad2" class="AuxTitularidad" column="id_titularidad2"/>
</class>
这种映射对我有用,除非“titularidad”和“titularidad2”具有相同的值(引用相同的对象),否则根本没有问题。发生这种情况时,hibernate 只获取 AuxTitularidad 类的单个对象并将其用于“titularidad”和“titularidad2”。
如果我只是为了阅读而获取它们应该不是问题,但是我需要使用 HTML 表单进行更新,并且由于“Description”的实例持有对“AuxTitularidad”的同一个实例的两个引用,它只保留一个值。
例子:
数字 1:这些是存储在我的数据库中的值:
titularidad: 17
titularidad2: 23
所以我使用 HTML 表单进行更新,并为它们分配这些新值:
titularidad: 30
titularidad2: 28
作品!
数字 2:这些是存储在我的数据库中的值:
titularidad: 18
titularidad2: 18
所以我使用 HTML 表单进行更新,并为它们分配这些新值:
titularidad: 12
titularidad2: 32
不工作。它将其保存在数据库中:
titularidad: 32
titularidad2: 32
我已经从 HTML 表单检查了对象的绑定,它是正确的,我确定问题是“titularidad”和“titularidad2”都持有对同一个对象的引用(甚至查看了对象的 id )。¿ 无论如何告诉休眠将这些放入单独的对象中?¿ 一些配置或参数?
提前致谢!