Я работаю с 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
}
Он отлично работает, когда сущность делает первым.Но когда обновляется сущность, свойство «createAt» имеет значение null.
Я знаю, что @CreatedDate просто работает при создании сущности.После создания он устанавливает ноль.В JPA эту проблему можно избежать с помощью @Column (updatable = false).
Итак, я хочу знать, что у spring-data-neo4j есть аннотация типа @Column (updatable = false), или решение этой проблемы можно избежать.