我正在使用spring-data-neo4j,最后在项目中进行了审核。
这是我的审核配置
@Configuration
@EnableNeo4jAuditing
class AuditingConfig {
@Bean
fun auditorProvider(): AuditorAware<Long> = SpringSecurityAuditAwareImpl()
}
class SpringSecurityAuditAwareImpl : AuditorAware<Long> {
override fun getCurrentAuditor(): Optional<Long> {
val authentication: Authentication? = SecurityContextHolder.getContext().authentication
if(authentication?.isAuthenticated != true ||
authentication is AnonymousAuthenticationToken)
return Optional.empty()
val userPrincipal = authentication.principal as UserPrincipal
return Optional.ofNullable(userPrincipal.id)
}
}
这是我的审计课
@JsonIgnoreProperties(
value = ["createdAt", "updatedAt"],
allowGetters = true
)
abstract class DateAudit : Serializable {
@CreatedDate
val createdAt: LocalDateTime? = null
@LastModifiedDate
val updatedAt: LocalDateTime? = null
}
当实体首次出现时,它可以完美工作。 但是当更新实体时,“ createdAt”属性为null。
我知道@CreatedDate在创建实体时才有效。 创建后,将其设置为null。 在JPA中,可以通过@Column(updatable = false)避免此问题。
所以,我想知道spring-data-neo4j像@Column(updatable = false)这样的注释 或解决方案可以避免此问题。
答案 0 :(得分:0)
您应该初始化“ createdAt”属性