2016-03-29 7 views
0

Slick 3.0のDBIO.sequence()メソッドのパラメータとして渡された一連のアクションの一部として実行されるクエリの結果を取得しようとしています。以下は同じもののコードスニペットです。Slick 3.0.0のデータベースシーケンスからの結果の取得

val query = for { 
(tt, th) <- tmpTrades join TableQuery[TrdHeader] on (_.tradeNum === _.tradeNum) 
} yield (tt.tradeNum, th.internalInd, th.tradeStatusInd, th.tradeDt, th.tradeInputDt, th.lastModifyDt) 

val queryAction = query.result 

val actions = Seq(tmpTrades.schema.create, tmpTrades ++= trades.toSeq: _*, queryAction, tmpTrades.schema.drop) 

val resultFuture = db.run(DBIO.sequence(actions)) 

Iは、クエリの収率句に対応する6つの属性の組としてDBIO.sequence(アクション)の結果を必要とresultFuture変数に割り当てます。どうすれば同じことができますか?

ありがとうございました。

答えて

0

あなたはflatMapの代わりDBIO.sequence使用する必要があります。

val myAction = tmpTrades.schema.create.flatMap { _ => 
    tmpTrades ++= trades.toSeq 
}.flatMap { _ => 
    queryAction 
}.flatMap { queryResult => 
    // Return the result at the end. 
    tmpTrades.schema.drop.map { _ => queryResult } 
} 

db.run(myAction.transactionally) 

それとも同じことをfor-yieldよう:

val myAction = for { 
    _ <- tmpTrades.schema.create 
    _ <- (tmpTrades ++= trades.toSeq) 
    queryResult <- queryAction 
    _ <- tmpTrades.schema.drop 
} yield queryResult 

db.run(myAction.transactionally) 
関連する問題