Hibernate不保存集合

时间:2013-02-21 04:07:19

标签: hibernate

<?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并保存Test时。我没有看到任何插入或更新语句。

PLease建议做什么。

Raulito

1 个答案:

答案 0 :(得分:2)

在休眠状态下,中的“可变”默认为“ true ”及其相关集合,它表示类或集合是允许添加,更新和删除。另一方面,如果 mutable 更改为false ,则它在类及其相关集合中具有不同的含义。因此,您需要删除 mutable 属性并将反向属性设置为 true