Mongodb 在特征读取中重写方法读取时出错

Mongodb 在特征读取中重写方法读取时出错,mongodb,scala,playframework-2.0,securesocial,Mongodb,Scala,Playframework 2.0,Securesocial,我正在编写一个play应用程序2.3(使用Scala)。 我正在使用安全社交模块(master)。 现在我已经创建了我的用户类: class LoginUser( providerId: String, userId: String, firstName: Option[String], lastName: Option[String], fullName: Option[String], email: Option[String], av

我正在编写一个play应用程序2.3(使用Scala)。 我正在使用安全社交模块(master)。 现在我已经创建了我的用户类:

class LoginUser(
    providerId: String,
    userId: String,
    firstName: Option[String],
    lastName: Option[String],
    fullName: Option[String],
    email: Option[String],
    avatarUrl: Option[String],
    authMethod: AuthenticationMethod,
    oAuth1Info: Option[OAuth1Info] = None,
    oAuth2Info: Option[OAuth2Info] = None,
    passwordInfo: Option[PasswordInfo] = None
               ) extends BasicProfile(providerId, userId, firstName, lastName, fullName,
                                      email, avatarUrl,authMethod, oAuth1Info, oAuth2Info,
                                      passwordInfo)
对于mongodb中的读/写用户日期,我编写了一个隐式对象:

object LoginUser {
  implicit val authenticationMethodFormat = Json.format[AuthenticationMethod]
  implicit val oAuth1InfoFormat = Json.format[OAuth1Info]
  implicit val oAuth2InfoFormat = Json.format[OAuth2Info]
  implicit val passwordInfoFormat = Json.format[PasswordInfo]
  implicit val profileFormat = Json.format[BasicProfile]
  implicit object LoginUserFormat extends Format[LoginUser] {
    def writes(user: LoginUser): JsValue = Json.obj(
        "providerId" -> user.providerId,
        "userId" -> user.userId,
        "firstName" -> user.firstName,
        "lastName" -> user.lastName,
        "fullName" -> user.fullName,
        "email" -> user.email,
        "avatarUrl" -> user.avatarUrl,
        "authMethod" -> user.authMethod,
        "oAuth1Info" -> user.oAuth1Info,
        "oAuth2Info" -> user.oAuth2Info,
        "passwordInfo" -> user.passwordInfo)
   def reads(json: JsValue): LoginUser = new LoginUser(
       (json \ "providerId").as[String],
       (json \ "userId").as[String],
       (json \ "firstName").as[Option[String]],
       (json \ "lastName").as[Option[String]],
       (json \ "fullName").as[Option[String]],
       (json \ "email").as[Option[String]],
       (json \ "avatarUrl").as[Option[String]],
       (json \ "authMethod").as[AuthenticationMethod],
       (json \ "oAuth1Info").as[Option[OAuth1Info]],
       (json \ "oAuth2Info").as[Option[OAuth2Info]],
       (json \ "passswordInfo").as[Option[PasswordInfo]]
       )


  } 
但是编译器告诉我以下错误:

[error] /Users/alberto/git/recommendation-system/app/security/UserService.scala:60: overriding method reads in trait Reads of type (json: play.api.libs.json.JsValue)play.api.libs.json.JsResult[security.LoginUser];
[error]  method reads has incompatible type
[error]    def reads(json: JsValue): LoginUser = new LoginUser(
[error]        ^
[error] one error found
[error] (compile:compile) Compilation failed
怎么了

overriding method reads in trait Reads of type (json: play.api.libs.json.JsValue)play.api.libs.json.JsResult[security.LoginUser];
[error]  method reads has incompatible type
表示
读取
特征中
读取
方法的方法签名为

def read(json:JsValue) : JsResult[LoginUser]
自从你试图实施

def read(json:JsValue) : LoginUser

您的方法签名和一个基本特征冲突,因此失败。

请考虑改用JSON组合符。将
用作[T]
将在类型不匹配时引发异常,而不是返回任何验证。