2016-09-23 7 views
1

Slickの中に存在しない行を更新しようとするとエラーが返ります。Slick:ゼロ行が更新された場合に更新時にエラーを返す方法

私のクエリ:

userPromotions.filter(promo => 
    promo.code === code).update(myUpdatedRow) 

私は(私は、エラー原因 "rowToUpdate.exist" 議員[ブール]でなくブールを持って)やろうクエリ:

val rowToUpdate = userPromotions.filter(promo => promo.code === code) 
if(rowToUpdate.exist) rowToUpdate.update(myUpdatedRow) 
else NotFound 

単一のクエリでそれを行う方法はありますか?

答えて

5

あなたはスリック3.0と更新された行数が0

userPromotions.filter(_.code === code).update(myUpdatedRow).flatMap { updatedRows => 
    if (updatedRows == 0) DBIO.failed(new Exception("0 rows updated")) 
    else DBIO.successful(updatedRows) 
}.transactionally 
あるときにトランザクションを失敗すること DBIO.failedを使用

の上を使用している場合

関連する問題