数据库触发器和 Hibernate
我遇到过一种情况:
- 通过休眠在目标表中
保存
或更新
一些数据, - 目标表上有一个触发器,该触发器将在
插入<之前执行 通过hibernate对目标表进行/code>或
update
操作 select
取出这条记录
但是我发现触发器修改过的字段并没有真正取出来。 这与 Hibernate 的事务提交(flush() 已被调用)或 Hibernate 缓存有关吗?谢谢。
I've met a scenario:
save
orupdate
some data in a target table by hibernate- there is a trigger on the target table which will be executed before
insert
orupdate
operations of the target table select
out this record by hibernate
But I find that the fields which have been modified by the trigger are not really fetched out.
Is this related with transactions commit of Hibernate (flush() has already be called) or Hibernate cache? thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以将属性映射为生成的值。这些值始终来自数据库并且无法存储。在插入或更新数据库后,Hibernate 会在后续查询中自动加载这些值。
You can map properties as generated values. These values always come from the database and can't be stored. Hibernate automatically loads these values in a subsequent query after inserting or updating the database.
这可能是由第一(会话)或第二(例如ehcache)缓存引起的。要重新读取实体,您需要调用 session.refresh()。
来自 hibernate 文档(位于该部分的底部)
This can be caused by both the first (session) or second (e.g. ehcache) caches. To re-read the entity, you'll need to call session.refresh().
From hibernate docs (at the bottom of the section)