如果另一个查询结果与Slick3.0中的某些条件匹配,则执行查询

时间:2016-06-08 10:08:06

标签: scala slick playframework-2.5 play-slick

我有一张类似

的表格
final class FooTable(tag: Tag) extends Table[Foo](tag, "foo") {

  def id = column[Int]("id", O.PrimaryKey)

  def amount = column[Long]("amount")

  def createTs = column[Timestamp]("create_ts")

  def updateTs = column[Timestamp]("update_ts")

  def * = (id, amount, status, createTs, updateTs) <> (Foo.tupled, Foo.unapply)

}

并尝试检查TableQuery[FooTable].map{_.amount}.sum >= 10L,如果结果为true,我想在一个DBIO.seq中执行一些db.run

到目前为止,我已经尝试了

  val action = for {
    bar <- (foos.map{_.amount}.sum <= givenLongValue)
    result <- DBIO.seq("//some queries here") if bar
  } yield result

但由于此错误,这不起作用

  

发现:slick.lifted.Rep [Boolean] required:Boolean

我也尝试过这种方式

(fooes.map{_.amount}.sum <= amount).filter{_}.map{ x =>
      DBIO.seq("some actions")
}

但是这个也会产生错误

  

无法找到参数ol的隐含值:   slick.lifted.OptionLift [slick.driver.MySQLDriver.api.DBIOAction [单位,slick.driver.MySQLDriver.api.NoStream,slick.driver.MySQLDriver.api.Effect.Write   同   slick.driver.MySQLDriver.api.Effect.Transactional],slick.lifted.Rep [选项[QO]]]

我怎样才能做到这一点?

提前致谢。

1 个答案:

答案 0 :(得分:1)

您应该尝试以下方法:

DropDownList