2012-01-25 2 views
0

Я использую Joda LocalDateTime и поведение по умолчанию преобразования в Монго BSON закончилось с чем-то вроде этого:Spring Data Монго конвертировать Joda LocaDateTime

"myTime":{ 
    "iLocalMillis":1327144433115, 
    "iChronology":{ 
     "_class":"org.joda.time.chrono.ISOChronology", 
     "iBase":{ 
     "_class":"org.joda.time.chrono.GregorianChronology", 
     "iMinDaysInFirstWeek":4 
     } 
    } 
} 

Это будет иметь проблемы при преобразовании обратно в объекты Java.

Как изменить поведение некоторых типов java при сохранении в Mongo? поскольку у меня есть несколько других классов, которые имеют ту же проблему с преобразованием по умолчанию.

Я использую весной 3.1 + data + mongo stack.

+0

Спасибо, Оливер. Но есть несколько непонятных вещей: 1) даже если требуется переписать только один объект, тогда нам нужно переопределить всю сущность; 2) он не учитывает аннотации жизненного цикла JPA, используя mongoTemplate. есть ли у нас JPA? 3) Я использую java config для весны 3.1 и не понял, как поместить конвертер в afterMappingMongoConverterCreation(). – jfd

ответ

1

У меня такая же проблема. Чтобы использовать решение конвертера Oliver, я должен создать конвертер для каждого класса с атрибутом jodatime, который немного раздражает. Я не могу найти, как конвертер конфигурации для определенного типа пересекает все классы домена. В итоге я создаю подкласс AbstractMongoEventListener, а затем сбросьте поле datetime перед сохранением и после загрузки. Надеюсь это поможет.

0

Как указал Оливер, используйте пользовательские преобразователи. Следите за ошибкой, описанной в DATAMONGO-1026. В этой проблеме также есть примеры пользовательских преобразователей, и, мы надеемся, скоро будут закрыты.

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