使用JPA进行历史跟踪

我希望通过使用新表来存储日志,以及用于进行更改的用户,日期以及每次更新/插入中更改的内容,来实现我的某个模型实体的历史记录跟踪/审核。

我正在使用EclipseLink作为我的JPA提供程序,但我不想使用其历史记录策略,因为提供程序将来可能会更改。 出于同样的原因,我不能使用Hibernate Envers 。

我查看了Spring Data提供的审计支持 ,但它看起来非常基础,它只允许您存储创建或修改实体的用户和日期,而不是更改。

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

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

是否有一个干净,简单和便携的方式来实现这一点?

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

基本上我用一些reflection来检查持久性属性。