当前位置: 首页 > 知识库问答 >
问题:

使用JPA跟踪历史记录

胡鸿羲
2023-03-14

我希望通过使用一个新表来存储一个日志,其中记录了在每次更新/插入中进行更改的用户、日期以及任何更改的内容,从而实现对我的一个模型实体的历史记录跟踪/审核。

我使用EclipseLink作为我的JPA提供者,但我不想使用它的历史策略,因为提供者将来可能会改变。出于同样的原因,我不能使用Hibernate Envers。

我研究了SpringData提供的审计支持,但它似乎非常基本,它只允许您存储创建或修改实体的用户和日期,而不允许存储更改。

我还知道JPA的prePerithpreUpdate,但具体说明如下:

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

有没有一种干净、简单、便携的方法来实现这一点?

共有1个答案

籍辰沛
2023-03-14

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

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

 类似资料:
  • 我正在使用Apache Camel,并试图创建一个工作流中每个消息处理历史的日志。 对于简单的直通工作流,即消息传入,经过几个步骤处理,然后离开,这可以简单到只保留交换的顺序日志。我可以通过编写一个自定义的TraceEventHandler来实现这一点,它在每次交换时都被调用,并允许我进行日志记录。 谢了。

  • 问题内容: 有人问我是否可以跟踪MySQL数据库中记录的更改。因此,更改字段后,可以使用旧的还是新的字段以及日期。有没有功能或通用技术可以做到这一点? 如果是这样,我正在考虑做这样的事情。创建一个名为的表。它包含与 主 表相同的字段,但以新旧为前缀,但仅适用于那些实际更改的字段和a 。它将以索引。这样,可以运行报告以显示每个记录的历史记录。这是个好方法吗?谢谢! 问题答案: 真微妙 如果业务要求是

  • 读取播放历史信息 调用地址 http://api.bilibili.cn/history 返回 返回值字段 字段类型 字段说明 results int 返回的记录总数目 list object 返回数据 返回字段 “list” 子项 返回值字段 字段类型 字段说明 aid int 视频编号 typeid int 视频分类ID typename string 视频分类名称 title string

  • 历史记录 控制台维护 Elasticsearch 成功执行的最后500个请求列表。点击窗口右上角的时钟图标即可查看历史记录。这个图标会打开历史记录面板,您可以在其中查看历史请求。您也可以在这里选择一个请求,它将被添加到编辑器中当前光标所在的位置。 图 9. 历史记录面板

  • 3.3.1.1. 同步的文件历史记录 微力同步记录对文件的添加,修改、删除的操作记录,通过历史记录列表可查看时间时间及发生设备,如下: 事件时间,显示添加、修改、删除等操作发生的时间; 文件时间,显示该文件的最后修改时间; 操作类型,显示此次针对该文件所进行的操作的类型; 发生设备,显示进行此操作的设备名称; 目录,显示该文件所属同步目录; 清空历史记录,点击后可清除所有记录,此操作仅清除记录而已

  • 我是詹金斯的新用户。我最近遇到了一个失败的产品构建,在该构建中,我看到该特定产品的过去未跟踪的Maven模块被添加到当前要构建的现有Maven模块集中。