gpt4 book ai didi

java - JPA/hibernate : how to automatically update fields on entity update

转载 作者:行者123 更新时间:2023-11-30 07:45:35 24 4
gpt4 key购买 nike

我正在使用 Camel 和 JPA 将实体保存到 Postgres 数据库。在每个实体中,我都有一个名为“历史记录”的字段,其中包含给定实体的所有旧值。我正在寻找一种在每次更新操作之前自动填充此字段的方法。在网上冲浪,我发现了 JPA 拦截器,但我发现它们用于审计/日志记录目的。我错了吗?最好的方法是什么?

最佳答案

JPA/Hibernate 拦截器(哪一个取决于您使用的版本)是实现此目的的一种方法。审核/日志记录与您想要执行的操作类似,即当实体本身更新(任何属性)时自动更新某些列/属性。请注意,手动更新查询会绕过这些拦截器,因此应该避免使用这些拦截器。

如何使用这些拦截器取决于您想要如何实现历史记录功能。如果您通过生成一些字符串/字节表示并将其存储在列中来完成此操作,那么它应该可以工作。如果您计划创建另一个实体等,您可能必须在拦截器中收集更改/旧值,并在成功提交后存储收集的值。 AFAIK 当拦截器被调用时不可能(至少不容易)创建一个新实体。

关于java - JPA/hibernate : how to automatically update fields on entity update,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33994888/

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