我今天发现了这个问题,还没有找到任何解决方案,我现在正在学习如何使用休眠,所以我会尽我所能来解释这种情况。获取相同的对象休眠到不同的对象
我有这个非常简单的类:
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表单进行更新,并且由于“Descripcion”实例持有两个对“ AuxTitularidad“,它只是保持单一的价值。
例子:
数1:这些是存储在我的数据库中的值:
titularidad: 17
titularidad2: 23
于是我就用HTML表单进行更新,并为其分配这些新的价值观:
titularidad: 30
titularidad2: 28
工程!
2号:这是存储在我的数据库中的值:
titularidad: 18
titularidad2: 18
于是我就用HTML表单进行更新,并为其分配这些新的价值观:
titularidad: 12
titularidad2: 32
隐而不宣”工作。这样可以节省这在DB:
titularidad: 32
titularidad2: 32
我检查从HTML表单对象的结合,这是正确的,我肯定知道的问题是,这两个“titularidad”和“titularidad2”举行引用同一个对象(甚至查看对象的ID)。无论如何要让hibernate把它们分解成单独的对象吗? ¿某些配置或参数?
在此先感谢!
好吧,如果这是预期的行为,我就去拿的对象,并在它们分配给我的“Descripcion”更新过程。谢谢! – CocheLee 2012-07-16 08:56:33