Исключение при получении объекта 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
,
У вас есть несколько вариантов здесь:
- предоставить аргумент по умолчанию для
upgradeInfo
- изменить тип
upgradeInfo
вOption[UpgradeInfo]
и предоставить значение по умолчаниюNone
- поиск в вашей коллекции Монго, чтобы найти плохой документ (ы) и удалить или вручную исправить документы, которые отсутствуют
upgradeInfo