我有一个数据库触发器,可以在插入数据时执行。从应用程序端,我使用hibernate来更新由数据库TRIGGER更新的同一个表。当我从应用程序端更新数据时,Trigger更新的数据被旧数据覆盖。我发现hibernate中的缓存值与数据库中的值不同。有没有正确的方法解决这个问题?我所说的缓存是一级缓存。
编辑 - Hibernate应该更新数据库中的某些字段,并且TRIGGER应该更新数据库中的其他字段。这可能吗?
答案 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更新表,这有助于避免任何重大意外。