0

我正在做,saveOrUpdate但我面临的问题是它正在覆盖表中已经存在的旧数据。

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

我正在使用休眠映射文件 (.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
4

1 回答 1

3

您是在更新和保存之前先加载实体吗?还是您只是创建一个实体实例,在其中添加您想要的 id,然后在空实例上更改一个属性?那会很糟糕,因为您刚刚告诉您的 ORM 具有 id X 的实体现在只有一个具有值的属性,所以它当然会清空所有其他列的值。

听起来你需要

1)加载行,然后进行修改,然后保存
或更新 2)使用 hql 仅更新一列。

于 2012-08-02T20:13:01.870 回答