Hibernate应该只更新数据库中的某些字段

时间:2014-06-19 10:59:24

标签: java mysql hibernate caching jpa

我有一个数据库触发器,可以在插入数据时执行。从应用程序端,我使用hibernate来更新由数据库TRIGGER更新的同一个表。当我从应用程序端更新数据时,Trigger更新的数据被旧数据覆盖。我发现hibernate中的缓存值与数据库中的值不同。有没有正确的方法解决这个问题?我所说的缓存是一级缓存。

编辑 - Hibernate应该更新数据库中的某些字段,并且TRIGGER应该更新数据库中的其他字段。这可能吗?

2 个答案:

答案 0 :(得分:1)

您可以使用刷新:

session.merge(entity);
session.flush();
//the trigger has been called
session.refresh(entity); 
//the entity will reflect the trigger changes

答案 1 :(得分:0)

我的问题实际上是问题的 EDIT 中提到的内容。弗拉德在评论中提到了问题的简单解决方案。将列标记为@Column(name =" dob",insertable = false,updatable = false)。如果hibernate更新表,这有助于避免任何重大意外。