2016-08-26 6 views
0

В двух словах:ZonedDateTime в MongoDB через морфий

  • java.time.ZonedDateTime не имеет ARGS конструктора (на самом деле это не имеет
    конструктора вообще)
  • , чтобы преодолеть это, я должен написать ZonedDateTimeConverter для морфия
  • , если я попытаюсь сохранить и загрузить мой ZonedDateTime без конвертера, Morphia сохраняет весь ZonedDateTime объект как DBObject, который крут, потому что Я мог бы прочитать все поля и initia т.е объект ZonedDateTime из , но я получил исключение на загрузку: No usable constructor for java.time.ZonedDateTime
  • если я пытаюсь сохранить и загрузить ZonedDateTime с преобразователем, я получил еще одно исключение: Can't find a codec for class java.time.LocalDateTime. Я начал играть с конвертерами на основе на странице this, но без каких-либо результатов.
  • Так что если у меня нет конвертера, я могу сохранить, но не могу загрузить, если у меня есть конвертер, я даже не могу сэкономить из-за отсутствия кодеков.

Есть идеи?

UPDATE: Оказались, что я должен написать конвертер для каждого подтипа началось с ZonedDateTime (например LocalDateTime, LocalDate, LocalTime), но оказалось, что я должен написать конвертер для java.time.ZoneRegion который является пакетом-частного.

ответ

0

Я подтолкнул поддержку более распространенных типов времени жизни Java 8 к Morphia на прошлой неделе, нацелив на выпуск 1.3. См. Вопрос here и связанные обязательства. Если вам нужен тип, которого нет в списке, напишите сообщение о проблеме Morphia, и я постараюсь убедиться, что он включен в 1.3.

+0

Я предполагаю, что это популярный прецедент, но если мы хотим заблокировать его до определенного момента времени и невосприимчивы к летнему сбережению или разным временным часам сервера, похоже, что способ java8 делать вещи - это ZonedDateTime.now (ZoneOffset.UTC)? Как мы должны использовать это с морфией, чтобы он был сохранен и последовательный/десериализуемый? – Justin