【问题标题】:Scala Salat deserialization error with @key带有@key的Scala Salat反序列化错误
【发布时间】:2015-06-29 11:42:39
【问题描述】:

我有一个看起来像这样的案例类:

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'

请问有人可以晒晒太阳吗?

【问题讨论】:

    标签: scala casbah salat


    【解决方案1】:

    您需要修复您的导入。使用

    import com.novus.salat.annotations._
    

    @Key 注释正确定位到getter

    https://github.com/salat/salat/wiki/Annotations

    【讨论】:

    • 谢谢!现在工作正常。实际上,@EnumAs 只需 { import com.novus.salat.EnumStrategy import com.novus.salat.annotations.EnumAs }
    • 抱歉,我知道,这不一致。我应该摆脱其余注释的@getter 定位要求,支持它很痛苦。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-22
    • 2014-11-21
    • 1970-01-01
    • 1970-01-01
    • 2014-02-19
    • 2012-01-01
    相关资源
    最近更新 更多