【问题标题】:@CreatedBy and @LastModifiedDate are no longer working with ZonedDateTime?@CreatedBy 和 @LastModifiedDate 不再使用 ZonedDateTime?
【发布时间】:2018-08-16 15:12:06
【问题描述】:

我已将旧的 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也有这个问题,我相信是相关的。

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

【问题讨论】:

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


    【解决方案1】:

    我遇到了同样的问题,可以在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()) }
    
    }
    

    【讨论】:

    • 面临此错误:org.bson.codecs.configuration.CodecConfigurationException:找不到类 java.time.ZonedDateTime 的编解码器。你遇到过同样的问题吗?我使用 Java、MongoDB。
    • @NguyễnĐứcTâm 您还需要为 ZonedDateTime 注册转换器,例如:stackoverflow.com/a/51664363/4245733
    【解决方案2】:

    旧答案有误,但我无法删除它,因为它已被接受。 请滚动到其他答案。

    【讨论】:

    • 它对我不起作用。还有其他解决办法吗?
    • 杰克逊与JPA无关
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-12
    • 2023-03-04
    • 2014-06-29
    • 1970-01-01
    • 2018-02-18
    相关资源
    最近更新 更多