使用@key进行Scala Salat反序列化错误

时间:2015-06-29 11:42:39

标签: scala casbah salat

我有一个如下所示的案例类:

import com.novus.salat.annotations.raw.Key
import org.bson.types.ObjectId

case class Users(
                  _id: ObjectId,
                  email: String,
                  password: String,
                  firstName: String,
                  lastName: String,
                  company: Option[String],
                  position: Option[String],
                  enabled: Boolean)

简单的SalatDAO:

import com.novus.salat.dao.SalatDAO
import org.bson.types.ObjectId
import com.novus.salat.global._

object UsersDAO extends SalatDAO[Users, ObjectId](
  collection = MongoFactory.getCollection("usersCollection"))

所以现在我想将“_id”改为“id”。我认为Salat @Key注释确实是出于这个目的。所以我写道:

...
@Key("_id") id: ObjectId,
...

当我尝试UsersDAO.find(MongoDBObject.empty)时,我得到了一个异常

java.lang.NoSuchMethodException: com...Users$.apply$default$1()

有趣的是 - 如果我做同样的事情,但是另一个类“id:String”我得到了这个异常

java.lang.Exception: class com...AnotherClass requires value for 'id'

有人可以抛出阳光吗?

1 个答案:

答案 0 :(得分:1)

您需要修复导入。使用

import com.novus.salat.annotations._

@Key注释正确定位到getter

请参阅https://github.com/salat/salat/wiki/Annotations