Я хочу, чтобы мой документ (@CreatedDate
и @LastModifiedDate
) MongoDB работал с полями ZonedDateTime
.
По-видимому, этот тип не поддерживается Spring Data (org.springframework.data.auditing.AnnotationAuditingMetadata
. org.springframework.data.auditing.AnnotationAuditingMetadata
).
Рамочная версия: Spring Boot 2.0.0 и Spring Data MongoDB 2.0.0
Ошибка проверки данных Spring Data:
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].
Монгольская конфигурация:
@Configuration
@EnableMongoAuditing
public class MongoConfiguration {
}
Аудиторская организация:
public abstract class BaseDocument {
@CreatedDate
private ZonedDateTime createdDate;
@LastModifiedDate
private ZonedDateTime lastModifiedDate;
}
Вещи, которые я пробовал
Я также попытался создать собственный конвертер для ZonedDateTime
, но он не учитывается Spring Data. Класс DateConvertingAuditableBeanWrapper
имеет ConversionService
который настроен в методе конструктора с помощью JodaTimeConverters
, Jsr310Converters
и ThreeTenBackPortConverters
.
Пользовательский конвертер:
@Component
public class LocalDateTimeToZonedDateTimeConverter implements Converter<LocalDateTime, ZonedDateTime> {
@Override
public ZonedDateTime convert(LocalDateTime source) {
return source.atZone(ZoneId.systemDefault());
}
}
Spring Data DateConvertingAuditableBeanWrapper:
class DefaultAuditableBeanWrapperFactory implements AuditableBeanWrapperFactory {
abstract static class DateConvertingAuditableBeanWrapper implements AuditableBeanWrapper {
private final ConversionService conversionService;
}
}
Можно ли ZonedDateTime
поля ZonedDateTime
?
Как я могу зарегистрировать конвертер?