休眠保存或更新会覆盖旧数据

时间:2012-08-02 20:07:40

标签: java hibernate hibernate-mapping

我正在做一个saveOrUpdate,但我遇到的问题是它正在覆盖已经在表格中的旧数据。

我有一个表,其中有一个关联ID作为密钥,并且对于该id我首先保留一些数据,然后再次针对同一个id在同一个表的另一列中传递确认消息。但是这会覆盖我在表格中的旧数据,而我得到的是一个带有id&的空表。消息,其他列无效。

我正在使用Hibernate Mapping Files(.hbm.xml)

有关如何保留旧数据并仅更新一列的建议?

更新

尝试加载持久性实例时,我得到了这个:

SEVERE: IllegalArgumentException in class: common.entity.AbstractDetailsKey, getter method of property: correlationId
...
org.hibernate.PropertyAccessException: IllegalArgumentException occurred calling getter of common.entity.AbstractDetailsKey.correlationId
...
Caused by: java.lang.IllegalArgumentException: 666

1 个答案:

答案 0 :(得分:3)

在更新和保存之前,您是先加载实体吗?或者你只是创建一个实体实例,在那里打你想要的id,并在空实例上更改一个属性?那会很糟糕,因为你刚刚告诉你的ORM,身份X的实体现在只有一个带有值的属性,所以当然它会使所有其他列的值无效。

听起来你需要

1)加载行,然后进行修改,然后saveOrUpdate
2)使用hql只更新一列。