У меня есть следующий класс, который сохраняется в mongodb, используя морфию в игре!приложение.Класс находится в модуле, который является зависимостью от другой игры!приложение.
Его конфигурация считывается из файла и сохраняется в БД при первоначальной загрузке (если его еще нет в БД), а затем в последующих запросах используется версия БД.
@Entity
public class Page extends Model {
@Id
public Long navigationId;
// etc ...
}
Начальная загрузка и последующий доступ к запросам работает нормально, и я могу увидеть страницу в монго:
> db.Page.find({_id:20000})
{ "_id" : NumberLong(20000), "className" : "models.Page" etc }
Однако, если я перезапущу игру!или сделать изменение кода, которое приведет к повторной инициализации Morphia (MorphiaPlugin-1.2.4> initialized
появляется в журналах), я получаю следующую трассировку стека:
Caused by: java.lang.RuntimeException: java.lang.RuntimeException: com.google.code.morphia.mapping.MappingException: Error setting value from converter (LongConverter) for models.Page.navigationId to 20000
at com.google.code.morphia.mapping.Mapper.fromDb(Mapper.java:487)
at com.google.code.morphia.mapping.Mapper.fromDBObject(Mapper.java:267)
at com.google.code.morphia.query.MorphiaIterator.convertItem(MorphiaIterator.java:66)
at com.google.code.morphia.query.MorphiaIterator.processItem(MorphiaIterator.java:53)
at com.google.code.morphia.query.MorphiaIterator.next(MorphiaIterator.java:48)
at com.google.code.morphia.query.QueryImpl.asList(QueryImpl.java:255)
at play.modules.morphia.Model$MorphiaQuery.asList(Model.java:1067)
at models.Page.findAll(Page.java)
at plugins.PageConfigLoadPlugin.loadPersistedPages(PageConfigLoadPlugin.java:62)
at plugins.PageConfigLoadPlugin.onApplicationStart(PageConfigLoadPlugin.java:51)
at play.plugins.PluginCollection.onApplicationStart(PluginCollection.java:425)
at play.Play.start(Play.java:495)
... 3 more
Caused by: java.lang.RuntimeException: com.google.code.morphia.mapping.MappingException: Error setting value from converter (LongConverter) for models.Page.navigationId to 20000
at com.google.code.morphia.mapping.ValueMapper.fromDBObject(ValueMapper.java:27)
at com.google.code.morphia.mapping.Mapper.readMappedField(Mapper.java:501)
at com.google.code.morphia.mapping.Mapper.fromDb(Mapper.java:484)
... 14 more
Caused by: com.google.code.morphia.mapping.MappingException: Error setting value from converter (LongConverter) for models.Page.navigationId to 20000
at com.google.code.morphia.converters.DefaultConverters.fromDBObject(DefaultConverters.java:133)
at com.google.code.morphia.mapping.ValueMapper.fromDBObject(ValueMapper.java:25)
... 16 more
Если я удаляю коллекцию из mongodb с помощью командной строки, я могу сноваЗагрузите и запросите объект страницы успешно из моей игры!веб-приложение
> db.Page.drop()
true
Как я уже говорил, этот класс находится в модуле.Эта проблема возникает только в одном приложении, от которого зависит модуль.Другое демо-приложение работает отлично.
есть предложения?