Данные Micronaut - Ошибка сохранения поля ZonedDateTime [Невозможно преобразовать тип [class java .time.ZonedDateTime] в тип назначения: class java .util.Date] - PullRequest
1 голос
/ 05 февраля 2020

Я пытался использовать модуль данных 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)) }
  }

}

Даже тогда я все еще получаю вышеупомянутую ошибку. Есть идеи, почему это так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...