数据库触发器和 Hibernate

发布于 2024-11-28 16:51:43 字数 303 浏览 0 评论 0原文

我遇到过一种情况:

  1. 通过休眠在目标表中保存更新一些数据,
  2. 目标表上有一个触发器,该触发器将在插入<之前执行 通过hibernate对目标表进行/code>或update操作
  3. select取出这条记录

但是我发现触发器修改过的字段并没有真正取出来。 这与 Hibernate 的事务提交(flush() 已被调用)或 Hibernate 缓存有关吗?谢谢。

I've met a scenario:

  1. save or update some data in a target table by hibernate
  2. there is a trigger on the target table which will be executed before insert or update operations of the target table
  3. 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

土豪我们做朋友吧 2024-12-05 16:51:43

您可以将属性映射为生成的值。这些值始终来自数据库并且无法存储。在插入或更新数据库后,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.

白衬杉格子梦 2024-12-05 16:51:43

这可能是由第一(会话)或第二(例如ehcache)缓存引起的。要重新读取实体,您需要调用 session.refresh()。

来自 hibernate 文档(位于该部分的底部)

可以随时重新加载对象及其所有集合
时间,使用refresh()方法。这在数据库时很有用
触发器用于初始化对象的一些属性。

sess.save(cat);
sess.flush(); //force the SQL INSERT
sess.refresh(cat); //re-read the state (after the trigger executes)

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)

It is possible to re-load an object and all its collections at any
time, using the refresh() method. This is useful when database
triggers are used to initialize some of the properties of the object.

sess.save(cat);
sess.flush(); //force the SQL INSERT
sess.refresh(cat); //re-read the state (after the trigger executes)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文