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

如何使用Spring Data JPA将列的新旧值保存到审计表中

云新知
2023-03-14
create table Audit
(
  Id INT NOT NULL PRIMARY KEY,
  TableName VARCHAR (100)
  ColumnName VARCHAR (100)
  RowId INT,
  OldValue VARCHAR (100),
  NewValue VARCHAR (100),
  Type VARCHAR (100),
  ChangedDate DATETIME,
  ChangedBy VARCHAR (100),
);

我可以知道审计实体的最佳方法,即保存和更新新旧值以及其他相关字段到审计表中。

共有1个答案

锺离烈
2023-03-14

查看hibernate envers,它易于配置(您所要做的就是将您的实体标记为@Auditable),它负责以下工作:

  1. 创建审核表
  2. 插入/更新/删除实体时将数据插入审核表
  3. 它提供了自己的查询语言,您可以使用该语言获取实体中所有更改的内容

更新
您还可以看看Javers。我使用了javers和Hibernate的EntityInterceptor来捕获字段更改、旧值和新值形式的更改。更多细节请参见javers Diff。

 类似资料:
  • 我随时都有一个“用户”表,如果插入、更新或删除了一行,那么我需要在“用户审核”表中插入一行,其中包含所有用户数据和操作列,以记录执行的操作。 我用的是Spring批处理,Spring数据JPA把数据插入用户表 我如何使用SpringDataJPA在SpringBatch中实现这一点,或者JPA/hibernate是否提供了任何实现?

  • 我正在考虑在使用表存储时为我的应用程序实现一个审计跟踪。 我需要能够记录一个特定客户的所有操作和来自该客户的实体的所有操作。 我的第一个猜测是为每个客户创建一个表(Audits_CustomerXXX),并使用实体id和行键(datetime.max.ticks-datetime.now.ticks).ToString(“D19”)值作为分区键。当我的问题是某个实体发生了什么时,这很有效?例如,购

  • 我想知道这是否可能。在我的项目中,用户可以更新表的列值。但是其他用户在14天内看不到更新的值。在每次检索操作中将填充最多14天的旧值。有可能在laravel做吗?

  • 问题内容: 从此列表: 我正在尝试创建: 被发现相同的任何值都被分组到其自己的子列表中。到目前为止,这是我的尝试,我在想应该使用循环吗? 问题答案: 有人提到它会得到 换句话说,当列表的编号不按顺序排列或为混乱列表时,该列表将不可用。 所以我有更好的答案来解决这个问题。

  • 问题内容: 假设我的列表得分= [1,2,3,4,5],并且在我的程序运行时它被更改了。如何将其保存到文件中,以便下次运行程序时可以将更改后的列表作为列表类型访问? 我试过了: 但这导致列表中的元素是字符串而不是整数。 问题答案: 我决定不想使用泡菜,因为我希望能够在测试期间打开文本文件并轻松更改其内容。因此,我这样做: 因此,尽管文件中的项目以字符串形式存储在文件中,但它们仍被读取为整数。

  • 问题内容: 我想使用Excel文件来存储用python制作的数据。我的问题是我无法将图纸添加到现有的excel文件中。在这里,我建议使用示例代码来解决此问题 此代码将两个DataFrame保存到两个表中,分别命名为“ x1”和“ x2”。如果创建两个新的DataFrame并尝试使用相同的代码添加两个新的工作表“ x3”和“ x4”,则原始数据将丢失。 我想要一个具有四张纸的Excel文件:“ x1