@CreatedBy 和@LastModifiedDate 不再使用 ZonedDateTime?

@CreatedBy and @LastModifiedDate are no longer working with 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也有这个问题,我相信是相关的。

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

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

我有同样的问题,可以解决它添加一个 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());
    }

}

Kotlin

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

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

}