У меня возникли некоторые проблемы с получением следующего примера для компиляции.
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
}
}
Но компилятор не работает со следующей ошибкой:
Example.scala:16:28: value === is not a member of slick.lifted.Rep[Option[Age]]
Правильный ли способ сделать этоиспользовать OptionColumnExtensionMethods
или что-то еще?Странно, однако, что классы типов для TypedType[Option[T]]
здесь не сработают.
Вот список некоторых других ресурсов, которые я выкопал, но ни один из них, похоже, не имеет отношения кТип контейнера вокруг пользовательского типа столбца, используя mappedColumnType
.