@CreatedBy和@LastModifiedDate不再与ZonedDateTime一起使用?

use*_*529 6 spring spring-data spring-data-jpa spring-boot 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]
Run Code Online (Sandbox Code Playgroud)

我检查了AnnotationAuditingMetaData,发现与ZonedDateTime有关。

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

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

Max*_*nzo 23

我有同样的问题,可以解决它添加dateTimeProviderRef@EnableJpaAuditing.

爪哇

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());
    }

}

Run Code Online (Sandbox Code Playgroud)

科特林

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

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

}
Run Code Online (Sandbox Code Playgroud)


lub*_*nac 0

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

  • 这对我不起作用。还有其他解决方案吗? (2认同)