2017-11-07 26 views
0

次の条件付き更新でfalseを返しました。しかし、データベースをチェックインすると、私が更新しようとしていた列が実際に更新されています。ファントムDSL条件付き更新

def deliver(d: Delivery, placedDate: java.time.LocalDate, locationKey: String, vendorId: String, orderId: String, code: String, courierId: String, courierName: String) = { 
    update. 
    where(_.placedDate eqs placedDate). 
    and(_.locationKey eqs locationKey). 
    and(_.vendorId eqs vendorId). 
    and(_.orderId eqs orderId). 
    modify(_.status setTo "DELIVERED"). 
    and(_.deliveredTime setTo LocalDateTime.now()). 
    onlyIf(_.status is "COLLECTED").and(_.deliveryCode is code).future().map(_.wasApplied) 
} 

これはDatastax Javaドライバは、下にこれを生成するものであることを意味ファントムドライバの値を通過しているあなたに

答えて

0

ありがとうございます。あなたがこれをフォローしたいなら、GitHubに完全なバグを投稿できますか?

一方、私は、単にテストしようとしているのではなく、直接読み込みを行う場合はwasAppliedに頼らないことをお勧めします。

いくつかのテストデータと更新された値を生成し、更新を実行し、Cassandraの最終結果を読み戻して比較します。条件付きバッチ更新を伴うwasAppliedの既知の問題がありますが、これ以外にもこれが動作することを期待しています。