Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 在Slick 3.0.2中过滤自定义列的选项_Scala_Slick_Slick 3.0 - Fatal编程技术网

Scala 在Slick 3.0.2中过滤自定义列的选项

Scala 在Slick 3.0.2中过滤自定义列的选项,scala,slick,slick-3.0,Scala,Slick,Slick 3.0,我在编译下面的示例时遇到了一些问题 import scala.slick.driver.MySQLDriver.simple._ case class Age(value: Int) case class User(id: Long, age: Option[Age]) object Dao { implicit val ageColumnType: TypedType[Age] = MappedColumnType.base[Age, Int](_.value, Age(_))

我在编译下面的示例时遇到了一些问题

import scala.slick.driver.MySQLDriver.simple._

case class Age(value: Int)
case class User(id: Long, age: Option[Age])

object Dao {
  implicit val ageColumnType: TypedType[Age] = MappedColumnType.base[Age, Int](_.value, Age(_))

  class UserTable(tag: Tag) extends Table[User](tag, "users") {
    def id = column[Long]("id", O.PrimaryKey, O.AutoInc)
    def age = column[Option[Age]]("age")
    def * = (id, age) <> (User.tupled, User.unapply)
  }

  val users = TableQuery[UserTable]
  def byId(id: Long)(implicit session: Session): Option[User] = {
    users.filter(_.age === Some(Age(21))).firstOption
  }
}
正确的方法是使用
选项ColumnExtensionMethods
还是其他什么?奇怪的是,
TypedType[Option[T]]
的类型类在这里却不起作用


下面是我找到的一些其他资源的列表,但它们似乎都没有使用
mappedColumnType
处理自定义列类型周围的容器类型


想出来了,觉得值得在这里发布


下一行的类型签名太宽

implicit val ageColumnType: TypedType[Age]
显然,隐式范围不再包含正确的证据来推断
过滤器
查询中所需的各种列运算符,包括
=
方法。相反,我只需要一个更具体的类型:

implicit val ageColumnType: BaseColumnType[Age]


根据对原始问题的评论,
==?
解决方案在进行此更改后也会起作用。谢谢

您是否尝试使用==?
implicit val ageColumnType: BaseColumnType[Age]