Java Mongo auditable ZoneDateTime字段不';t在弹簧靴2中不工作
在SpringBoot项目中,我使用@CreatedDate之类的注释来保存有关创建/更新相应文档的日期的信息。ZonedDateTime在整个项目中使用,因此带注释的字段也是ZonedDateTime。要启用Mongo的日期格式和ZonedDateTime之间的转换,需要使用自定义转换器 现在,当使用SpringBoot 1.5.x时,自定义转换器对于可审核字段非常有效。在SpringBoot2.0.x中,自定义转换器适用于所有字段,但不适用于可审核字段。因此,如果我删除@EnableMongoAuditing,一切正常(整个项目中的所有ZonedDateTime字段都被正确地持久化到Mongo并从Mongo读取),但是创建/更新的日期字段是空的。如果启用mongo审核,则在尝试保存文档时会出现以下异常:Java Mongo auditable ZoneDateTime字段不';t在弹簧靴2中不工作,java,spring,mongodb,spring-boot,spring-data-mongodb,Java,Spring,Mongodb,Spring Boot,Spring Data Mongodb,在SpringBoot项目中,我使用@CreatedDate之类的注释来保存有关创建/更新相应文档的日期的信息。ZonedDateTime在整个项目中使用,因此带注释的字段也是ZonedDateTime。要启用Mongo的日期格式和ZonedDateTime之间的转换,需要使用自定义转换器 现在,当使用SpringBoot 1.5.x时,自定义转换器对于可审核字段非常有效。在SpringBoot2.0.x中,自定义转换器适用于所有字段,但不适用于可审核字段。因此,如果我删除@EnableMong
java.lang.IllegalArgumentException: Invalid date type for member <MEMBER NAME>!
Supported types are [org.joda.time.DateTime, org.joda.time.LocalDateTime, java.util.Date, java.lang.Long, long]
除了降级到Spring Boot 1.5.x之外,是否有其他方法可以使转换器在mongo可审核字段中工作?FYI,我将类型更改为java.util.Date并使用自定义访问器,但这看起来并不优雅,而且我觉得我缺少一些明显的东西。它过去很管用,现在不管用一定有原因。
@Configuration
@EnableMongoAuditing
public class MongoConfig {
@Bean
public MongoCustomConversions customConversions(){
List<Converter<?,?>> converters = new ArrayList<>();
converters.add(new ZonedDateTimeToDateConverter());
converters.add(new DateToZonedDateTimeConverter());
return new MongoCustomConversions(converters);
}
}
abstract class BaseModel {
@Id
private String id;
@CreatedDate
private ZonedDateTime created;
@LastModifiedDate
private ZonedDateTime updated;
}