Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Mongo auditable ZoneDateTime字段不';t在弹簧靴2中不工作_Java_Spring_Mongodb_Spring Boot_Spring Data Mongodb - Fatal编程技术网

Java Mongo auditable ZoneDateTime字段不';t在弹簧靴2中不工作

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

在SpringBoot项目中,我使用@CreatedDate之类的注释来保存有关创建/更新相应文档的日期的信息。ZonedDateTime在整个项目中使用,因此带注释的字段也是ZonedDateTime。要启用Mongo的日期格式和ZonedDateTime之间的转换,需要使用自定义转换器

现在,当使用SpringBoot 1.5.x时,自定义转换器对于可审核字段非常有效。在SpringBoot2.0.x中,自定义转换器适用于所有字段,但不适用于可审核字段。因此,如果我删除@EnableMongoAuditing,一切正常(整个项目中的所有ZonedDateTime字段都被正确地持久化到Mongo并从Mongo读取),但是创建/更新的日期字段是空的。如果启用mongo审核,则在尝试保存文档时会出现以下异常:

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