Данные Micronaut - Ошибка при сохранении поля ZonedDateTime [Невозможно преобразовать тип [класс java.time.ZonedDateTime] в целевой тип: класс java.util.Date]
Я пытался использовать модуль данных Micronaut для сохранения базы данных, но при попытке сохранить объект с полем ZonedDateTime получаю следующую ошибку.
io.micronaut.data.exceptions.DataAccessException: Cannot convert type [class java.time.ZonedDateTime] to target type: class java.util.Date. Consider defining a TypeConverter bean to handle this case.
at io.micronaut.data.runtime.mapper.QueryStatement.lambda$convertRequired$0(QueryStatement.java:204)
at java.base/java.util.Optional.orElseThrow(Optional.java:408)
at io.micronaut.data.runtime.mapper.QueryStatement.convertRequired(QueryStatement.java:203)
Я бы предположил, что Micronaut будет иметь реализацию по умолчанию для обработки типов дат Java8. Не уверен, почему это не так.
Я также зарегистрировал преобразователь типов ниже (где TypeUtils.toUtilDate - это внутренний класс, который выполняет фактическое преобразование). Я вижу, что Micronaut подобрал этот класс (поэтому он печатает журнал, если я его добавлю).
@Factory
class TypeConverters {
@Singleton
fun zdatetimeToUtilDate(): TypeConverter<ZonedDateTime, Date> {
return TypeConverter { datetime, targetType, context -> Optional.of(TypeUtils.toUtilDate(datetime)) }
}
}
Даже тогда я все еще получаю вышеупомянутую ошибку. Есть идеи, почему это так?