2013-07-04 2 views
2

У меня есть объект имеет подкласс как атрибут:Исключение при получении Salat объекта с Подкласс

case class UpgradeInfo(
    @EnumAs upgradeType: UpgradeType.Value, 
    @EnumAs timeUnit: TimeUnit.Value, 
    timeQuantity: Int, 
    start: Date, 
    end: Date) 

case class Upgrade(
    @Key("_id") id: ObjectId = new ObjectId, 
    adId: ObjectId, 
    upgradeInfo: UpgradeInfo, 
    price: Double) 

Создание и обновление объекта работает отлично, но когда я пытаюсь извлечь Upgrade объект с этим кодом (должен получить все обновления объектов):

UpgradeDAO.find(MongoDBObject()).toList 

я получаю следующее исключение:

[error]  Exception: class models.entities.Upgrade requires value for 'upgradeInfo' (Grater.scala:402) 
[error] com.novus.salat.DefaultArg.safeValue$lzycompute(Grater.scala:406) 
[error] com.novus.salat.DefaultArg.safeValue(Grater.scala:402) 
[error] com.novus.salat.ConcreteGrater.safeDefault(Grater.scala:363) 
[error] com.novus.salat.ConcreteGrater$$anonfun$5$$anonfun$apply$3.apply(Grater.scala:262) 
[error] com.novus.salat.ConcreteGrater$$anonfun$5$$anonfun$apply$3.apply(Grater.scala:262) 
[error] com.novus.salat.ConcreteGrater$$anonfun$5.apply(Grater.scala:262) 
[error] com.novus.salat.ConcreteGrater$$anonfun$5.apply(Grater.scala:247) 
[error] com.novus.salat.ConcreteGrater.asObject(Grater.scala:247) 
[error] com.novus.salat.dao.SalatMongoCursorBase$class.next(SalatMongoCursor.scala:45) 
[error] com.novus.salat.dao.SalatMongoCursor.next(SalatMongoCursor.scala:151) 
[error] com.novus.salat.dao.SalatMongoCursor.foreach(SalatMongoCursor.scala:151) 
[error] com.novus.salat.dao.SalatMongoCursor.to(SalatMongoCursor.scala:151) 
[error] com.novus.salat.dao.SalatMongoCursor.toList(SalatMongoCursor.scala:151) 
[error] models.entities.UpgradeDAO$.find(Upgrade.scala:47) 
[error] models.UpgradeSpecs$$anonfun$1$$anonfun$apply$28$$anonfun$apply$29.apply(UpgradeSpecs.scala:129) 
[error] models.UpgradeSpecs$$anonfun$1$$anonfun$apply$28$$anonfun$apply$29.apply(UpgradeSpecs.scala:128) 
[error] play.api.test.Helpers$.running(Helpers.scala:40) 
[error] models.UpgradeSpecs$$anonfun$1$$anonfun$apply$28.apply(UpgradeSpecs.scala:128) 
[error] models.UpgradeSpecs$$anonfun$1$$anonfun$apply$28.apply(UpgradeSpecs.scala:128) 

Любая идея, что я делаю неправильно?

ответ

1

Это вызвано документом в вашей коллекции монго, в котором отсутствует значение для upgradeInfo.

У вас есть несколько вариантов здесь:

  1. обеспечивают аргумент по умолчанию для upgradeInfo
  2. изменения типа upgradeInfo в Option[UpgradeInfo] и указать значение по умолчанию None
  3. поиск коллекции Монго найти плохой документ (документы) и удалить или вручную устранить недостающие документы upgradeInfo
Смежные вопросы