2013-02-21 135 views
1
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate- mapping-3.0.dtd"> 
<hibernate-mapping> 
<class name="com.business.Test" table="Test"> 
    <composite-id name="key"> 
     <key-property name="x" column="X"/> 
     <key-property name="y" column="Y"/> 
    </composite-id> 

    <set name="valueObjects" inverse="false" lazy="false" cascade="all"> 
     <key> 
      <column name="X"/> 
      <column name="Y"/>   
     </key> 
     <one-to-many class="com.business.ValueObjects" /> 
    </set> 

</class> 
</hibernate-mapping> 




<?xml version="1.0"?> 

<!DOCTYPE hibernate-mapping PUBLIC 
     "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 

<hibernate-mapping> 
<class name="com.business.ValueObjects" table="ValueObjects" mutable="false"> 
    <id name="id" type="java.lang.Long" column="ID"> 
     <generator class="sequence"> 
      <param name="sequence">ID_SEQ</param> 
     </generator> 
    </id> 

    <property name="x" column="X"/> 
    <property name="y" column="Y"/> 

</class> 
</hibernate-mapping> 

当我加载Test对象时,hibernate加载了ValueObjects集合。但是,当我更新ValueObjects并保存测试。我没有看到任何插入或更新语句。休眠不保存集合

PLease建议该怎么做。

Raulito

+0

而不是保存使用合并方法 – swamy 2013-02-21 05:52:58

回答

2

在Hibernate中,“可变”默认为“真正”在及其相关集合,它指的是类或者集合被允许添加,更新和删除 。另一方面,如果可变更改为虚假,它在类和它的相关集合中有不同的含义。所以您需要删除可变属性并设置反转属性为true