2

Мы используем Objectify 5 для доступа к Google Cloud Datastore. У нас есть объект с свойством типа Interval из библиотеки Joda-Time. Когда мы пытаемся сохранить такую ​​сущность, мы получаем ошибку ниже. Кажется, что Objectify имеет проблему с Chronology и его подклассами.Означает ли поддержка класса Joda-Time Interval?

com.googlecode.objectify.SaveException: Error saving MyEntity(null): Class 'class org.joda.time.chrono.ISOChronology' is not a registered @Subclass 
    at com.googlecode.objectify.impl.EntityMetadata.save(EntityMetadata.java:95) 
    at com.googlecode.objectify.impl.WriteEngine.save(WriteEngine.java:75) 
    at com.googlecode.objectify.impl.SaverImpl.entities(SaverImpl.java:60) 
    at com.googlecode.objectify.impl.SaverImpl.entity(SaverImpl.java:35) 
... 

Мы зарегистрировали переводчиков Joda-Time в Objectify вместе с нашими объектами следующим образом.

... 

// Joda-Time translators 
JodaTimeTranslators.add(ObjectifyService.factory()); 

// persistent entities 
ObjectifyService.register(MyEntity.class); 

... 

Когда мы используем DateTime вместо Interval, он отлично работает нормально. Мы что-то пропустили? Поддерживает ли Objectify поддержку Joda-Time Interval из коробки?

ответ

3

Если вы посмотрите на source code, очевидно, нет. Поддерживаемые типы:

DateTimeZone 
LocalDate 
LocalDateTime 
DateTime (via ReadableInstant) 

Может быть, вы можете узнать из исходного кода и написать свой собственный переводчик/адаптер, смотри, например, исходный код LocalDateTranslatorFactory Это, кажется, не так сложно. Но, возможно, вы все равно зарегистрируете свой собственный адаптер.

+0

Кроме того, PR приветствуются :) – stickfigure

+0

Да, я проверил исходный код, я просто хотел быть уверенным, что ничего не пропустил. – pgiecek

Смежные вопросы