@CreatedBy和@LastModifiedDate不再使用ZonedDateTime了?

时间:2018-03-08 09:54:46

标签: spring spring-boot spring-data spring-data-jpa zoneddatetime

我已将旧的spring boot 1.5.3项目更新为spring boot 2.0.0。发布。 我有一个审计实体,有两个ZonedDateTime类型的字段,用@CreatedBy和@LastModifiedDate注释。

在之前的版本中,一切正常。但是,通过新的更新,在将实体保存在存储库中时,我得到一个错误,即

 createdDate=<null>
 lastModifiedDate=<null>
 ]! Supported types are [org.joda.time.DateTime, org.joda.time.LocalDateTime, java.util.Date, java.lang.Long, long]

我检查了AnnotationAuditingMetaData,我发现了与ZonedDateTime相关的注意事项。

https://jira.spring.io/browse/DATAJPA-1242中也有这个问题,我相信它是相关的。

我的问题是我在这里做错了什么,春天是停止支持还是我做错了什么?

2 个答案:

答案 0 :(得分:4)

我遇到了同样的问题,可以解决这个问题,将dateTimeProviderRef添加到@EnableJpaAuditing

Java

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.auditing.DateTimeProvider;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
import java.time.ZonedDateTime;
import java.util.Optional;

@Configuration
@EnableJpaAuditing(dateTimeProviderRef = "auditingDateTimeProvider")
public class PersistenceConfig {

    @Bean // Makes ZonedDateTime compatible with auditing fields
    public DateTimeProvider auditingDateTimeProvider() {
        return () -> Optional.of(ZonedDateTime.now());
    }

}

科特林

@Configuration
@EnableJpaAuditing(dateTimeProviderRef = "auditingDateTimeProvider")
class PersistenceConfig {

    @Bean // Makes ZonedDateTime compatible with auditing fields
    fun auditingDateTimeProvider()= DateTimeProvider { of(ZonedDateTime.now()) }

}

答案 1 :(得分:2)

尝试定义您的默认时区:

spring.jackson.time-zone=UTC