Java 如何获取列的列表字符串在Hibernate Envers中更改为ModifiedFlag=true
我使用Hibernate Envers和“withModifiedFlag=true”作为表“user”,列_mod是用布尔数据生成的。但我无法通过代码或获取方式获取已更改列的列表。这是最初包含在Envers 6.0中的一项功能,但我们将其作为Envers 5.3的一部分作为的一部分进行了备份。因此,只要您至少使用Hibernate 5.3.0.Final或更高版本,您就应该可以访问此功能 下面的一个简单示例说明了如何按id获取给定实体类的所有修订Java 如何获取列的列表字符串在Hibernate Envers中更改为ModifiedFlag=true,java,hibernate,spring-data-jpa,hibernate-envers,Java,Hibernate,Spring Data Jpa,Hibernate Envers,我使用Hibernate Envers和“withModifiedFlag=true”作为表“user”,列_mod是用布尔数据生成的。但我无法通过代码或获取方式获取已更改列的列表。这是最初包含在Envers 6.0中的一项功能,但我们将其作为Envers 5.3的一部分作为的一部分进行了备份。因此,只要您至少使用Hibernate 5.3.0.Final或更高版本,您就应该可以访问此功能 下面的一个简单示例说明了如何按id获取给定实体类的所有修订 List results = AuditRea
List results = AuditReaderFactory.get( session ).createQuery()
.forRevisionsOfEntityWithChanges( YourEntityClass.class, false )
.add( AuditEntity.id().eq( entityId ) )
.getResultList();
这将返回一个由以下元素组成的对象数组元素列表
- 0:该修订处的实体实例
- 1:修订实体实例,例如,
或您的自定义修订实体DefaultRevisionEntity
- 2:版本的版本类型,例如
、ADD
或MOD
DEL
- 3:一个
集合,其中包含在该修订版中修改的所有属性名称集合
@Entity
@Audited(withModifiedFlag = true)
public class SimpleEntity {
@Id
private Integer id;
@Column(name = "ENTITY_NAME")
private String name;
}
如果在修订期间修改了该属性,则
集
将包含字符串名称
。请务必注意,集合中不包含列名,而是包含属性名。您缺少一个问题。当您添加时,请同时添加:您迄今为止为解决问题所做的努力。这怎么不起作用。你的经历和你的期望。还有你自己进行的关于这个问题的研究的结果。已经谢谢了。谢谢@Ben的支持。我创建了一个对象“user”,并希望在数据库mySQL中跟踪更改的历史。我使用Hibernate Envers(版本5.3.1),为“user”对象设置annotation@Audited(withModifiedFlag=true),然后使用列“user\u aud”表“user\u mod is work fine”(布尔数据)。我曾尝试使用AuditReader,但我只得到AuditQuery和修订版的数据。我想获取表“user\u aud”中更改的列的名称(值=1)。如何在“user\u aud”表中更改修订的列名?