spring @CreatedBy和@LastModifiedDate不再与分区日期时间一起使用?

mrphzbgm  于 2023-02-03  发布在  Spring
关注(0)|答案(3)|浏览(174)

我已经将一个旧的spring Boot 1.5.3项目更新为spring boot 2.0.0. RELEASE。我有一个审计实体,它有两个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停止了支撑还是我做错了什么?

vfh0ocws

vfh0ocws1#

我遇到了同样的问题,可以通过向@EnableJpaAuditing添加dateTimeProviderRef来解决它。

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

}
62o28rlo

62o28rlo2#

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

zour9fqk

zour9fqk3#

您还必须将此注解@EntityListeners(AuditingEntityListener.class)放在使用@CreatedDate的类上。

相关问题