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

问题描述:

我正在做一个saveOrUpdate但我面临的问题是它覆盖已经在表中的旧数据。休眠保存或更新覆盖旧数据

我有一个表,其中有一个相关ID作为关键,并反对该ID我先坚持一些数据,然后再次对同一个ID传递一个确认消息在同一个表中的另一列稍后。但是这会覆盖我在表中的旧数据,而我得到的是一个空表,其ID为&消息,其他列无效。

我使用Hibernate映射文件(的.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 

你是第一次加载实体,更新和保存过吗?或者你只是创建一个实体实例,把你想要的id放在那里,然后在空实例上改变一个属性?这很糟糕,因为你刚刚告诉你的ORM,具有id X的实体现在只有一个属性带有值,所以当然它会清空所有其他列的值。

听起来像是你需要或者

1)装载的行,然后使修改,然后saveOrUpdate
2)使用HQL来只更新一列。

+1

加载该行,然后进行更改是我的想法,但如果在休眠配置中有其他解决方案,我不知道它会更好。我有一个实体班,你有我。 – 2012-08-02 20:18:24

+0

我知道没有映射解决方案,您可以使用hql来更新一列。我不认为你会找到一个映射解决方案,你想要的似乎与ORM的工作方式是对立的。 – hvgotcodes 2012-08-02 20:24:08

+1

我已经更新了加载持久性实例时遇到的错误。我不明白我出错的地方。 – 2012-08-03 02:27:44