首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Play 2.0和MongoDB与Salat接口

Play 2.0和MongoDB与Salat接口
EN

Stack Overflow用户
提问于 2012-06-11 21:01:37
回答 1查看 857关注 0票数 0

我一直在我的Play 2.0应用程序中遇到这个错误:

代码语言:javascript
复制
play.core.ActionInvoker$$anonfun$receive$1$$anon$1: Execution exception [[MatchError: 4f7f4ae4251735803a942b2c (of class org.bson.types.ObjectId)]]
    at play.core.ActionInvoker$$anonfun$receive$1.apply(Invoker.scala:82) [play_2.9.1.jar:2.0]
    at play.core.ActionInvoker$$anonfun$receive$1.apply(Invoker.scala:63) [play_2.9.1.jar:2.0]
    at akka.actor.Actor$class.apply(Actor.scala:290) [akka-actor.jar:2.0]
    at play.core.ActionInvoker.apply(Invoker.scala:61) [play_2.9.1.jar:2.0]
    at akka.actor.ActorCell.invoke(ActorCell.scala:617) [akka-actor.jar:2.0]
    at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:179) [akka-actor.jar:2.0]
Caused by: scala.MatchError: 4f7f4ae4251735803a942b2c (of class org.bson.types.ObjectId)
    at com.novus.salat.transformers.in.LongToInt$class.transform(Injectors.scala:216) ~[salat-core_2.9.1-0.0.8-SNAPSHOT.jar:0.0.8-SNAPSHOT]
    at com.novus.salat.transformers.in.package$$anon$31.transform(Injectors.scala:180) ~[salat-core_2.9.1-0.0.8-SNAPSHOT.jar:0.0.8-SNAPSHOT]
    at com.novus.salat.transformers.Transformer$$anonfun$transform_$bang$1.apply(Transformer.scala:71) ~[salat-core_2.9.1-0.0.8-SNAPSHOT.jar:0.0.8-SNAPSHOT]
    at com.novus.salat.transformers.Transformer$$anonfun$transform_$bang$1.apply(Transformer.scala:71) ~[salat-core_2.9.1-0.0.8-SNAPSHOT.jar:0.0.8-SNAPSHOT]
    at scala.Option.flatMap(Option.scala:146) ~[scala-library.jar:0.11.2]
    at com.novus.salat.transformers.Transformer.transform_$bang(Transformer.scala:71) ~[salat-core_2.9.1-0.0.8-SNAPSHOT.jar:0.0.8-SNAPSHOT]

我的模型非常简单,我使用了SalatDao风格的DB access:

代码语言:javascript
复制
case class Gossip(@Key("_id") id: org.bson.types.ObjectId, title: String, link: String, description: String, permalink: String,
                  image: String, date: String) {}
object GossipDAO extends SalatDAO[Gossip, ObjectId](
  collection = MongoConnection()("gossips")("items"))

当我调用以下内容时,会引发错误:

代码语言:javascript
复制
val gossips = GossipDAO.find(ref = MongoDBObject("modificationDate" -> MongoDBObject("$gte" -> startDate))).toList

我已经通过其他脚本将数据加载到我的MongoDB中,它们似乎还可以,因为我可以在MongoDB shell中找到它们:

代码语言:javascript
复制
 db.items.find({_id:ObjectId("4f7f4ae4251735803a942b2c")})

更重要的是,如果我更改了startDate条件,因为没有任何对象与它相匹配,那么我的代码就运行得很好。这表明查询是正确的,但是从MongoDBObject到Scala的绯闻类的转换失败。

上面的代码有什么问题吗?

更新

  • 我的依赖项只有以下几个:

val appDependencies = Seq( "com.mongodb.casbah“% "casbah”% "2.1.5-1","com.novus“% "salat-core”%“0.0.8-快照”)

  • I使用'modificationDate',因为它是mongoDB集合对象中的一个字段。

https://gist.github.com/2928862

如果您只获取整个集合,是否会发生相同的问题??

我不知道怎么用沙发刀去取所有的东西。但是,当我拥有没有'id‘键的case类时,我只能在MongoConnection上执行MongoConnection()操作,它将返回所有可用的对象并将它们转换为模型对象。当我添加'id‘键时,相同的解决方案会产生与上面相同的错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-18 06:27:20

那么,删除“目标”目录并再次运行Play20似乎解决了这个问题。一定是一些老课的信息在里面。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10987476

复制
相关文章

相似问题

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