scala – 正确使用光滑过滤器

我正在使用光滑访问数据库.我想这样查询:

case class Coupon(couponId:Long, shopId:String)

class Coupons(tag:Tag) extends Table[Coupon](tag, "coupons"){

  def couponId = column[Long]("coupon_id")

  def shopId = column[String]("shop_id")

  override def * = (couponId, shopId) <> (Coupon.tupled, Coupon.unapply)
}

object Coupons extends TableQuery(new Coupons(_)){

  def findCouponBy(couponId:Long, shopId:Option[String]) = {

    val s = DB.createSession()
    try {
       val q = for {
           coupon <- this.filter(c => c.couponId === couponId && 
                shopId.map(s => c.shopId === s).getOrElse(true)
        } yield coupon
      s.database.run(q.result)
    } finally s.close
  }
}

我认为这可行.但是,编译器告诉我
错误:(126,-1)播放2编译器:
 类型不匹配;
  发现:任何
  必需:slick.lifted.Rep [?]

问题在于:
    shopId.map(s => c.shopId === s).getOrElse(true)

我想知道如何才能做到这一点.

我正在使用光滑的3.0.0-RC

最佳答案 使用slick.lifted.LiteralColumn(true)

Scala的类型推断限制

点赞