scala - 光滑过滤器的正确使用方法

标签 scala slick playframework-2.3

我正在使用 slick 来访问数据库。我想这样查询:

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) Play 2 编译器: 类型不匹配; 发现:任何 必需:slick.lifted.Rep[?]

问题出在这里: shopId.map(s => c.shopId === s).getOrElse(true)

我想知道如何才能完成这项工作。

我使用的是 slick 3.0.0-RC

最佳答案

使用slick.lifted.LiteralColumn(true)

Scala 的类型推断限制

关于scala - 光滑过滤器的正确使用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30090872/

相关文章:

scala - 添加两个 RDD[mllib.linalg.Vector]

scala - Slick where/filter/withFilter

scala - 如何在 Play scala 中使用 slick 3 从 Rep[String] 获取字符串值?

scala - 如何将 WebJars 添加到我的 Play 应用程序?

scala - 用列表 Play map 的scala json

java - 加特林验证解码的 JWT token

mysql - 如何解决 Slick 3.0 模式创建由于没有长度的关键规范而出现错误

scala - Play 框架 - 在 View 中获取 session 数据

scala - 如何设置自定义配置文件进行测试?

scala - Scala 中如何检查所有列表元素是否不同?