首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检索具有子类的Salat对象时出现异常

检索具有子类的Salat对象时出现异常
EN

Stack Overflow用户
提问于 2013-07-04 17:32:04
回答 1查看 380关注 0票数 2

我有一个对象,它有一个子类作为属性:

代码语言:javascript
复制
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)

创建和更新对象很好,但是当我尝试用下面的代码检索升级对象时(应该检索所有升级对象):

代码语言:javascript
复制
UpgradeDAO.find(MongoDBObject()).toList

我得到以下异常:

代码语言:javascript
复制
[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)

知道我做错了什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-30 21:26:49

这是由mongo集合中缺少upgradeInfo值的文档引起的。

这里有几个选项:

mongo集合提供了一个默认参数upgradeInfo

  • change of

  • to upgradeInfo to Option[UpgradeInfo],并提供了默认值None

  • search mongo集合,以查找损坏的文档并移除或手动修复缺少upgradeInfo的文档。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17466778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档