【问题标题】:Scala - Unexpected Nullable Found - Left JoinScala - 发现意外的 Nullable - 左连接
【发布时间】:2019-05-26 22:13:08
【问题描述】:

我的 Scala 应用程序收到 UnexpectedNullableFound 错误,我希望就如何更正此问题获得一些帮助。

错误:-

[error] application - Unable to log user in. An exception was thrown
java.lang.RuntimeException: Left(UnexpectedNullableFound(ColumnName(.language,Some(language))))                                                                                             at anorm.MayErr$$anonfun$get$1.apply(MayErr.scala:35) ~[anorm_2.11-2.4.0.jar:2.4.0]                                                                                                 at anorm.MayErr$$anonfun$get$1.apply(MayErr.scala:34) ~[anorm_2.11-2.4.0.jar:2.4.0]                                                                                                 at scala.util.Either.fold(Either.scala:98) ~[scala-library-2.11.12.jar:na]                at anorm.MayErr.get(MayErr.scala:34) ~[anorm_2.11-2.4.0.jar:2.4.0]
        at anorm.Row$class.unsafeGet(Row.scala:103) ~[anorm_2.11-2.4.0.jar:2.4.0]
        at anorm.Cursor$ResultRow.unsafeGet(Cursor.scala:77) ~[anorm_2.11-2.4.0.jar:2.4.0]        at anorm.Row$class.apply(Row.scala:80) ~[anorm_2.11-2.4.0.jar:2.4.0]                      at anorm.Cursor$ResultRow.apply(Cursor.scala:77) ~[anorm_2.11-2.4.0.jar:2.4.0]
        at models.UserModel$$anonfun$findUserByEmailAndPassword$1$$anonfun$apply$9.apply(UserModel.scala:162) ~[classes/:na]
        at models.UserModel$$anonfun$findUserByEmailAndPassword$1$$anonfun$apply$9.apply(UserModel.scala:156) ~[classes/:na]

这是我认为可能导致此错误的代码:-

  def findUserByEmailAndPassword(email: String, password: String, browserHeaders: String, ip: String): Option[SocialUser] = DB.withConnection(db) { implicit c =>
    SQL"""
    select * from find_user_by_email_and_password($email, $password, $browserHeaders, inet($ip))
    """().map(row => (row[Option[Long]]("id"),
      row[Option[String]]("email"),
      row[Option[Int]]("verification"),
      row[Option[Boolean]]("on_mailing_list"),
      row[Option[Boolean]]("tfa_enabled"),
      row[Option[String]]("pgp"),
      row[String]("language")) match {
        case (Some(id: Long),
          Some(email: String),
          Some(verification: Int),
          Some(on_mailing_list: Boolean),
          Some(tfa_enabled: Boolean),
          pgp: Option[String],
          language: String) =>
          Some(SocialUser(id, email, verification, language, on_mailing_list, tfa_enabled, pgp))
        case _ =>
          None
      }
    ).head

任何帮助将不胜感激。

【问题讨论】:

    标签: postgresql scala playframework left-join nullable


    【解决方案1】:

    您将从language 列中获取row[String]("language") 的值,但此列包含NULL 值。

    你需要写成row[Option[String]]("language")或者在数据库方案中设置语言栏NOT NULL

    【讨论】:

    • 非常感谢您的帮助。您的建议还要求我在 'language: String)' 行前添加 Some()。
    猜你喜欢
    • 2014-03-02
    • 2014-12-10
    • 2011-10-01
    • 1970-01-01
    • 2019-09-02
    • 2016-10-02
    • 1970-01-01
    • 1970-01-01
    • 2015-12-25
    相关资源
    最近更新 更多