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]