光滑投影<>与伴侣对象的特征

时间:2017-11-07 15:15:15

标签: scala slick slick-3.0

我是Scala& amp;的新手。光滑,我在实施用户帐户时遇到了一些麻烦。

用户类&伴侣对象:

case class User(id: Long, email: String, password: String, role: Role)

object User {
}

角色特质&伴侣对象:

sealed trait Role

object Role {
    case object Administrator extends Role
    case object NormalUser extends Role
}

UserRepository架构配置

import javax.inject.{ Inject, Singleton }
import play.api.db.slick.DatabaseConfigProvider
import slick.jdbc.JdbcProfile

import scala.concurrent.{ Future, ExecutionContext }

@Singleton
class UserRepository @Inject() (dbConfigProvider: DatabaseConfigProvider)(implicit ec: ExecutionContext) {
  private val dbConfig = dbConfigProvider.get[JdbcProfile]
  import dbConfig._
  import profile.api._

  private class UsersTable(tag: Tag) extends Table[User](tag, "users") {
    def id = column[Long]("id", O.PrimaryKey, O.AutoInc)
    def email = column[String]("email")
    def password = column[String]("password")
    def role = column[String]("role")

    def * = (id, email, password, role) <> ((User.apply _).tupled, (User.unapply _))
  }

我在User.applyUser.unapply

上遇到类型不匹配
[error]  found   : ((Long, String, String, models.Role)) => models.User
[error]  required: ((Long, String, String, String)) => ?
[error]     def * = (id, email, password, role) <> ((User.apply _).tupled, (User.unapply _))

我已经尝试按照光滑文档 1 中的建议编写自己的函数类型,并使用MappedColumnType {创建自定义标量类型{3}} 但似乎都不起作用。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

错误在这里:

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

应该有Role而不是String