[英]@DateTimeFormat annotation in entity/document class
我需要在實體類中將字符串從mongo映射到LocalDateTime。 mongo中的日期存儲為字符串,而不是ISODate。 例如。 2015-02-05 10:10:10
我嘗試使用@DateTimeFormat(pattern =“ yyyy-MM-dd HH:mm:ss”),但似乎未觸發。
@Document
@Data
@NoArgsConstructor
public class XYZ {
@Field(name = "datetime")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime datetime;
}
目前,XYZrepository.findAll()引發異常
org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [java.time.LocalDateTime] for value '2015-02-05 10:10:10'; nested exception is java.time.format.DateTimeParseException: Text '2015-02-05 10:10:10' could not be parsed at index 10
at org.springframework.core.convert.support.ConversionUtils.invokeConverter(ConversionUtils.java:47) ~[spring-core-5.2.0.M3.jar:5.2.0.M3]
at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:191) ~[spring-core-5.2.0.M3.jar:5.2.0.M3]
at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:174) ~[spring-core-5.2.0.M3.jar:5.2.0.M3]
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.readValue(MappingMongoConverter.java:1513) ~[spring-data-mongodb-2.2.0.RC1.jar:2.2.0.RC1]
at org.springframework.data.mongodb.core.convert.MappingMongoConverter$MongoDbPropertyValueProvider.getPropertyValue(MappingMongoConverter.java:1417) ~[spring-data-mongodb-2.2.0.RC1.jar:2.2.0.RC1]
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.readProperties(MappingMongoConverter.java:392) ~[spring-data-mongodb-2.2.0.RC1.jar:2.2.0.RC1]
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.populateProperties(MappingMongoConverter.java:309) ~[spring-data-mongodb-2.2.0.RC1.jar:2.2.0.RC1]
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:289) ~[spring-data-mongodb-2.2.0.RC1.jar:2.2.0.RC1]
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:259) ~[spring-data-mongodb-2.2.0.RC1.jar:2.2.0.RC1]
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:208) ~[spring-data-mongodb-2.2.0.RC1.jar:2.2.0.RC1]
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:204) ~[spring-data-mongodb-2.2.0.RC1.jar:2.2.0.RC1]
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:91) ~[spring-data-mongodb-2.2.0.RC1.jar:2.2.0.RC1]
at org.springframework.data.mongodb.core.ReactiveMongoTemplate$ReadDocumentCallback.doWith(ReactiveMongoTemplate.java:3061) ~[spring-data-mongodb-2.2.0.RC1.jar:2.2.0.RC1]
at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:100) ~[reactor-core-3.3.0.M2.jar:3.3.0.M2]
我認為您應該實現一個轉換器。
例:
@WritingConverter
public class LocalDateTimeToStringConverter implements Converter<LocalDateTime, String> {
@Override
public String convert(LocalDateTime localDateTime) {
return localDateTime.toString();
}
}
@ReadingConverter
public class StringToLocalDateTimeConverter implements Converter<String, LocalDateTime> {
@Override
public LocalDateTime convert(String s) {
return LocalDateTime.parse(s);
}
}
@Configuration
public class MongoConfig {
@Bean
public MongoCustomConversions customConversions() {
List<Converter<?, ?>> converterList = new ArrayList<>();
converterList.add(new LocalDateTimeToStringConverter());
converterList.add(new StringToLocalDateTimeConverter());
return new MongoCustomConversions(converterList);
}
}
它將String轉換為LocalDateTime並從MongoDB返回。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.