Ich magAbfrage ausführen, wenn eine andere Abfrageergebnis einige Bedingungen in Slick3.0 Spiele
einen Tisch etwasfinal 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)
}
und versuchen TableQuery[FooTable].map{_.amount}.sum >= 10L
und wenn das Ergebnis wahr zu prüfen ist, möchte ich einige DBIO.seq
in einem einzigen auszuführen db.run
.
Bisher habe ich versucht,
val action = for {
bar <- (foos.map{_.amount}.sum <= givenLongValue)
result <- DBIO.seq("//some queries here") if bar
} yield result
aber das funktioniert nicht, weil dieser Fehler
gefunden: slick.lifted.Rep [Boolean] erforderlich: Boolean
und ich habe auch so versucht
(fooes.map{_.amount}.sum <= amount).filter{_}.map{ x =>
DBIO.seq("some actions")
}
aber dies erzeugt auch einen Fehler
nicht impliziten Wert für den Parameter ol gefunden: slick.lifted.OptionLift [slick.driver.MySQLDriver.api.DBIOAction [Unit, slick.driver.MySQLDriver.api .NoStream, slick.driver.MySQLDriver.api.Effect.Write mit slick.driver.MySQLDriver.api.Effect.Transactional], slick.lifted.Rep [Option [QO]]]
Wie kann Ich erreiche das?
Vielen Dank im Voraus.