插入/更新后如何更新对象

时间:2014-03-04 20:34:37

标签: sql hibernate jpa jpa-2.0

我们的某些表有触发器,因此它们会在每次put操作后更新插入/修改的实体。

如何指示Hibernate在put()操作后立即读取实体,以便应用程序始终可以访问从DB读取的最准确数据(包括触发器修改的数据)。 为简单起见,假设在put()操作之后触发器立即触发。

我正在寻找像select-after-update或select-after-insert之类的注释。 如果我可以在插入/更新后指定要读取的列,那么更好的解决方案就是。

更新

@Generated注释在我的情况下不起作用,因为我正在使用@ColumnTransformer注释来修改已修改的日期here

@Generated完全失败,因为它让Hibernate相信数据库会为它产生价值。因此,在插入/更新期间,将忽略在列上指定的自定义写入SQL。

我想要@Generated注释中的重新加载功能,但在插入/更新期间没有忽略字段部分。

2 个答案:

答案 0 :(得分:1)

您正在寻找the @Generated annotation

答案 1 :(得分:1)

我认为不能在一次操作中完成。正如你所说@Generated将忽略该列而@PostPersist和@PostUpdate无法调用EntityManager或查询(参见文档https://docs.jboss.org/hibernate/core/4.0/hem/en-US/html_single/#d0e2985

此外,如果您在同一个事务中执行此操作,那么当您尝试再次加载数据时,是什么保证您执行触发器?

正如我所看到的,唯一的出路是在对象的保存或更新之后,在另一个事务中刷新()。