【问题标题】:History tracking with JPA使用 JPA 进行历史跟踪
【发布时间】:2013-11-26 12:20:26
【问题描述】:

我想为我的一个模型实体实现历史跟踪/审计,方法是使用一个新表来存储一个日志,其中包含进行更改的用户、日期以及每次更新/插入中发生的任何更改。

我使用 EclipseLink 作为我的 JPA 提供程序,但我不想使用它的History Policy,因为提供程序将来可能会发生变化。出于同样的原因,我也不能使用Hibernate Envers

我查看了auditing support which Spring Data provides,但它看起来非常基本,它只允许您存储创建或修改实体的用户和日期,而不是更改。

我也知道 JPA 的 prePersistpreUpdate,但具体说明如下:

一般来说,可移植应用程序的生命周期方法不应该 调用 EntityManager 或 Query 操作,访问其他实体 实例,或修改同一持久性中的关系 上下文。

是否有一种干净、简单且可移植的方式来实现这一点?

【问题讨论】:

    标签: java jakarta-ee jpa


    【解决方案1】:

    我使用单独的 EJB 服务手动完成了这项工作,该服务的职责是提取历史数据并将其保存为 MAP。仅保存基本数据和关系 ID 非常初级,但对于我的情况来说已经足够了。

    基本上,我通过一些反射来检查持久属性。

    【讨论】:

    • 谢谢安德烈,我会尝试类似的方法
    猜你喜欢
    • 2015-05-03
    • 2016-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多