我正在Sping Boot Application中实现Spring JPA审计。我有下面的抽象类,它由我的实体扩展,我需要跟踪审计。
@Data
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class Auditable<T> {
@CreatedBy
@Column(updatable = false)
protected T createdBy;
@Temporal(TemporalType.TIMESTAMP)
@CreationTimestamp
@Column(updatable = false)
protected Date createdDate;
@LastModifiedBy
protected T lastModifiedBy;
@Temporal(TemporalType.TIMESTAMP)
@UpdateTimestamp
protected Date lastModifiedDate;
}
字符串
但是lastModifiedBy字段只存储了最新编辑该身份的用户的“身份”。有没有什么方法可以将其扩展为存储编辑该特定记录的用户的“列表”,并将最新编辑者附加在该列表的末尾?顺便说一下,我使用Postgres作为我的数据库。
所有可用的文档都没有这样的实现。我正在考虑构建自己的自定义审计设置。想到这里询问意见。
1条答案
按热度按时间e0bqpujr1#
可以通过自定义audit设置来存储编辑过特定记录的用户的列表,并将最新的编辑器附加在该列表的末尾。Spring Data JPA的内置审计机制旨在捕获负责最后修改和创建实体的单个用户,这可能不直接符合你的要求。下面是一个使用Postgres作为数据库在Sping Boot 应用程序中实现这种自定义审计的高级方法:
新建一个实体来表示审计历史:
字符串
修改您的Auditable类来处理审计历史列表:
型
每当创建或更新实体时,updateAuditHistory方法将自动向CNOSTHistory列表添加一个条目,捕获编辑器和时间戳。
查询实体时,可以访问编辑历史记录列表,获取该实体的完整编辑历史记录。
型
然后,您可以浏览浏览历史记录,以获取随着时间的推移编辑该实体的用户列表。
我希望这个方法能帮助你解决这个问题。