我正在做一个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
答案 0 :(得分:3)
在更新和保存之前,您是先加载实体吗?或者你只是创建一个实体实例,在那里打你想要的id,并在空实例上更改一个属性?那会很糟糕,因为你刚刚告诉你的ORM,身份X的实体现在只有一个带有值的属性,所以当然它会使所有其他列的值无效。
听起来你需要
1)加载行,然后进行修改,然后saveOrUpdate
2)使用hql只更新一列。