Scala 在slick 2.0上,我发现我不能隐式地使用用户定义的列

Scala 在slick 2.0上,我发现我不能隐式地使用用户定义的列,scala,slick,Scala,Slick,我使用slick 2.0 rc 我已定义字段用户ID: trait TypedId extends Any { def value: Long } trait HasId[ID <: TypedId] { _: Table[_] => def id: Column[ID] } case class UserId(value:Long) extends AnyVal with TypedId case class User(id: Option[UserId],

我使用slick 2.0 rc 我已定义字段
用户ID

trait TypedId extends Any {
   def value: Long
}

trait HasId[ID <: TypedId] {
  _: Table[_] =>
  def id: Column[ID]
}

case class UserId(value:Long) extends AnyVal with TypedId

case class User(id: Option[UserId],
                email: String,
                firstName: String,
                lastName: String,
                phone:String)

这似乎是已经回答的问题的重复,可以在这里找到:

您是否发现您的重复实际上是相同的链接和相同的页面?您的意思是用户ID只能由MappedTo定义,我不能使用trait TypedId来定义它?这一个不同于您所说的重复,我使用对象作为UserId,这次我使用类作为UserId。您不能使用对象作为UserId。是的,要么扩展
MappedTo
(但要注意MappedTo有一个开放的bug),要么编写一个
MappedColumnType
。可能重复@Akos Krivachy,这是不同的问题错误是因为我使用了object。但是这个问题我使用了类,但仍然有错误
class Users(tag: Tag) extends Table[User](tag, "users") with HasId[Option[UserId]] {
    def * = (id.?, email, firstName , lastName , phone )<> (User.tupled, User.unapply)
    def id= column[Option[UserId]]("ID", O.AutoInc, O.PrimaryKey)
    def email = column[String]("EMAIL", O.NotNull)

    def firstName = column[String]("FIRST_NAME", O.NotNull)

    def lastName = column[String]("LAST_NAME", O.NotNull)
    def phone =column[String]("PHONE", O.NotNull)
}
[error] C:\assigment\slick-advanced\app\models\User.scala:27: could not find imp
licit value for parameter tm: scala.slick.ast.TypedType[Option[models.UserId]]
[error]   def id= column[Option[UserId]]("ID", O.AutoInc, O.PrimaryKey)