我有标记对象让我发疯。我正在尝试更新它,每次我做的一切似乎都没问题,直到我检查数据库并且没有更新。
我打开了所有日志,但我没有看到任何异常。
即使在我创建了全新的对象并尝试更新(或合并它)之后,它也不会显示在数据库中。它将创建新对象,但不会更新它。
有没有人有类似的问题,你是如何解决的?
<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>
答案 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标记的项目(记录)。