gpt4 book ai didi

java - 使用 JPA 进行历史跟踪

转载 作者:搜寻专家 更新时间:2023-10-31 20:34:39 24 4
gpt4 key购买 nike

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

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

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

我也知道 JPA 的 prePersistpreUpdate,但是规范说:

In general, the lifecycle method of a portable application should not invoke EntityManager or Query operations, access other entity instances, or modify relationships within the same persistence context.

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

最佳答案

我是用一个单独的 EJB 服务手动完成的,该服务的职责是提取历史数据并将其保存为 MAP。这是非常简陋的,其中只保存了基本数据和关系的 ID,但这对我的情况来说已经足够了。

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

关于java - 使用 JPA 进行历史跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20216946/

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