gpt4 book ai didi

java - 如何在 Hibernate 中保存时增加版本字段,无论是否脏?

转载 作者:行者123 更新时间:2023-11-30 09:49:05 31 4
gpt4 key购买 nike

我使用带有版本列的 Hibernate 来实现乐观并发控制。

问题:是否可以在每次将实体保存到数据库时增加实体的版本号,无论它是否已更改?

只要实体中的某些字段发生变化,版本号就会增加。但是,如果实体中没有字段发生变化,则实体的版本号保持不变。

这个问题背后的原因是我在两个表之间有一个逻辑上的主从关系,我想在细节发生变化时增加主表中的版本号,即使主数据没有改变。这种主从关系在 Hibernate 中没有映射。我总是将它们保存在一个事务中。

最佳答案

当您确定某个细节已更改时,您可以使用 Hibernate 拦截器来更新主记录的版本号。

http://docs.jboss.org/hibernate/core/3.3/reference/en/html/events.html

一个限制是此解决方案特定于 Hibernate。 JPA 还允许使用注释(例如 PostPersist、PostUpdate 等)的事件驱动逻辑,但这些方法不会让您访问底层 session (更重要的是,文档警告您不要使用这些方法修改 session 数据)。我通常使用拦截器来执行审计,但它们可以很容易地扩展为在记录发生更改时更新版本号。

关于java - 如何在 Hibernate 中保存时增加版本字段,无论是否脏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5990766/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com