类型不匹配的 Scala Slick 查询

Type Mistmatch Scala Slick Query

我在 scala 中使用 slick 获取用户名和密码时遇到问题,基本上类似于

var query = "SELECT * FROM  \"default\".users as A " + "WHERE " + " A.username LIKE \'" + email + "\' " + "AND" + " A.password LIKE \'" + password + "\' ";

这是我的案例class 架构

  case class User(
                       id: Long = 0L,
                       username: String,
                       password: String,

                       author_id:Long,
                       created_on: DateTime,
                       updated_by: Long,
                       updated_on:Option[DateTime]
                     )

  class UserTable(tag:Tag) extends Table[User](tag,"user"){
    override def * = (id,username,password,author_id,created_on,updated_by,updated_on.?) <> (User.tupled,User.unapply)

    def id = column[Long]("id",O.PrimaryKey,O.AutoInc)

    def username = column[String]("username")

    def password = column[String]("password")

    def created_on = column[DateTime]("created_on")

    def updated_on = column[DateTime]("dateupdated")

    def author_id = column[Long]("author_id")

    def updated_by = column[Long]("updated_by")
  }

 lazy  val UserTable = TableQuery[UserTable]

下面是我的查询

val users = Main.UserTable.filter(_.username == email)
      .filter(_.password  == password).take(1)
filter(_.username == email)

您的意思可能是 === 而不是 ==

这是用于构建查询表达式的 Slick DSL 的一部分(他们不能称之为 == 因为 Scala 的相等比较器无法被替换)。

Warning: Most operators mimic the plain Scala equivalents, but you have to use === instead of == for comparing two values for equality and =!= instead of != for inequality. This is necessary because these operators are already defined (with unsuitable types and semantics) on the base type Any, so they cannot be replaced by extension methods.