在我的实际项目(带有休眠 JPA 的 Spring Boot 2(中,我需要实现基于字段的审计跟踪。如果用户更改了任何字段,则他/她需要输入原因。如果更改了对象的多个字段,则每个更改都必须单独具有原因文本。
审查方面有2个要求:
- 如果我选择一个字段,我必须列出所有更改以及原因。
- 如果我选择主(从多个其他对象构建(业务对象,我必须列出所有更改。
我不需要恢复任何旧状态。
我过去已经使用Hibernate Envers,JaVer库和JPA审计功能进行简单的审计,其中更改是在对象级别处理的,而不是在字段级别处理的。然而,在实际案例中,我不知道我应该在哪个方向深入挖掘。
Hibernate envrs 支持基于字段的审计。此外,您可以指定自定义修订实体,您可以在其中存储每个修订的额外信息,例如用户和原因。 JPA 审计不会处理您的案例。它只是使您能够使用操作回调,例如@PrePersist或@PostUpdate。 JaVer可能是Hibernate Envrs的替代品,但是由于您已经使用Hibernate,因此将Envrs集成为同一家族的工具会容易得多。