Hibernate不更新(合并)对象

时间:2011-06-22 14:08:46

标签: java hibernate foreign-keys

我有标记对象让我发疯。我正在尝试更新它,每次我做的一切似乎都没问题,直到我检查数据库并且没有更新。

我打开了所有日志,但我没有看到任何异常。

即使在我创建了全新的对象并尝试更新(或合并它)之后,它也不会显示在数据库中。它将创建新对象,但不会更新它。

有没有人有类似的问题,你是如何解决的?

<hibernate-mapping package="com.package">

<class name="com.package.Tag" table="tags" lazy="false" mutable="false" >
    <meta attribute="generated-class">com.package.generated.AbstractTag</meta>
    <meta attribute="scope-class">public abstract</meta>
    <cache usage="read-write"/>

    <id name="id" type="long" column="tag_id">
        <generator class="native"/>
    </id>


    <property name="name" type="string" column="name" unique="true"/>

    <property name="itemCount" type="integer" column="itemCount"/>

</class>

</hibernate-mapping>

2 个答案:

答案 0 :(得分:1)

注意mutable="false"它使对象可以由应用程序模仿:

如此处所指定:http://docs.jboss.org/hibernate/core/3.3/reference/en/html/mapping.html

  

mutable(可选 - 默认为true):指定类的实例是(不)可变的。应用程序无法更新或删除不可变类,mutable =“false”。这允许Hibernate进行一些小的性能优化。

从hbm文件中删除mutable="false"解决了问题。

答案 1 :(得分:0)

您是否尝试在项目上设置(并保存)标记,而不是将项目添加到Tag类?

所以基本上做了数据库所需要的,首先创建一个Tag(没有对项目的任何引用),然后创建带有Tag标记的项目(记录)。