2 回答
TA贡献1795条经验 获得超7个赞
在最初的问题多年之后,它仍然是一个问题。
虽然不是一个完美的解决方案,但我最终获取(通过findById()
)现有实体并在执行更新之前手动设置新实体上的@CreatedBy
和@CreatedDate
字段。JPA 的审计框架没有自动处理这个问题或提供更好的方法来完成它,这既令人惊讶又令人沮丧。
TA贡献1848条经验 获得超10个赞
当我需要添加审计信息时,我以前尝试过这样。
我有一DataConfig堂这样的课。
@Configuration
@EnableJpaAuditing
public class DataConfig {
@Bean
public AuditorAware<UUID> auditorProvider() {
return new YourSecurityAuditAware();
}
@Bean
public DateTimeProvider dateTimeProvider() {
return () -> Optional.of(Instant.from(ZonedDateTime.now()));
}
}
现在你需要AuditorAware类来获取审计信息。所以这个类会是这样的;
public class XPorterSecurityAuditAware implements AuditorAware<UUID> {
@Override
public Optional<UUID> getCurrentAuditor() {
//you can change UUID format as well
return Optional.of(UUID.randomUUID());
}
}
希望这会帮助你。
添加回答
举报