首页 > 解决方案 > 如何操纵我的审计项目以在 Spring Boot 中持续存在

问题描述

我正在使用 Spring Boot 和 JpaRepository 来保存我的数据。但我需要一种方法来审核我的 jpa 请求。

问题是。我想获取在请求发生的那一刻生成的事件,并让对象持久化和旧对象并操纵它以持久化自定义审计表。我不想使用默认结构进行审核。例如,@JaversSpringDataAuditable 将审计保存在特定的表结构中。我不想要这个我只想在拦截器或类似的东西中获取结构并操纵它以保持我的特定结构

标签: springspring-bootjpaspring-data-jpaaudit

解决方案


目前还不清楚您到底想要达到什么目标。因此,我将提到一些在 Spring Boot 中进行审计的简单方法,希望对您有所帮助。

对于审计 JPA 交互,您可以启用 JPA 审计宽度类@EnableJpaAuditing中的注释@Config。您可以使用注释使实体可审计@EntityListeners(AuditingEntityListener.class)。当实体对象被持久化或更新时,审计信息将被捕获。

例如,这种带注释的实体可以存储@CreatedDate@LastModifiedDate。有关更多信息,您可以查看Spring 的文档

@Entity
@EntityListeners(AuditingEntityListener.class)
public class ExampleEntity {
    
    //...
    
    @Column(name = "created_date", nullable = false, updatable = false)
    @CreatedDate
    private long createdDate;

    @Column(name = "modified_date")
    @LastModifiedDate
    private long modifiedDate;
    
    //...
}

如果您想在实体被持久化或更新之前执行一些操作,您可以使用注解@PrePersist@PreUpdate(@PreRemove也可用但似乎不需要)。

@Entity
public class Example Entity {

    //...
      
    @PrePersist
    public void onPrePersist() { 
        // Do something before entity is persisted
    }
      
    @PreUpdate
    public void onPreUpdate() { 
        // Do something before entity is updated
    }
}

推荐阅读