我想在neo4j属性中设置(updatable = false)

时间:2018-10-05 06:38:21

标签: neo4j spring-data-neo4j

我正在使用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)这样的注释 或解决方案可以避免此问题。

1 个答案:

答案 0 :(得分:0)

您应该初始化“ createdAt”属性