播放2.0和MongoDB与萨拉特接口(Play 2.0 and MongoDB interfaci

2019-10-31 19:20发布

我不断收到这个错误跟我玩2.0的应用程序:

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访问:

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"))

当我把这种引发的错误:

val gossips = GossipDAO.find(ref = MongoDBObject("modificationDate" -> MongoDBObject("$gte" -> startDate))).toList

我已经通过一些其他的脚本加载数据到我的MongoDB中,他们似乎是好了,因为我能够找到它们在MongoDB中壳采用:

 db.items.find({_id:ObjectId("4f7f4ae4251735803a942b2c")})

如果我改变起始日期的条件,从而没有对象匹配它更重要的是,我的代码运行正常。 这表明查询是正确的,但来自MongoDBObject到Scala的八卦类转型失败。

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

UPDATE

  • 我的依赖关系是只有这个:

    VAL appDependencies = SEQ( “com.mongodb.casbah” %% “卡斯巴” % “2.1.5-1”, “com.novus” %% “色拉芯” % “0.0.8-快照”)

  • 我用“时间modificationdate”,因为它是MongoDB的集合对象的字段。

  • 当我执行db.items.find({_ ID:物件( “4f7f4ae4251735803a942b2c”)})我得到这样的:

https://gist.github.com/2928862

  • 如果你只是获取整个集合,是同样的问题发生?

我不知道如何获取与萨拉特DAO的所有对象。 但是,当我有没有“身份证”键我的案例类,我能做到这db.find()上MongoConnection,它会返回所有可用的对象,并将它们转换成模型对象。 相同的溶液中,当我已经添加的“id”键所产生的相同的错误如上。

Answer 1:

好吧,看来,删除“目标”目录并运行Play20再次解决了这个问题。 一定是有一些老班信息。



文章来源: Play 2.0 and MongoDB interfacing with Salat