Phantom DSL条件更新

时间:2017-11-07 20:48:42

标签: phantom-dsl

我有以下条件更新返回false。但是,当我在数据库中检查时,我试图更新的列实际上已更新。

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)
}

谢谢

1 个答案:

答案 0 :(得分:0)

这是幻像驱动程序的传递值,这意味着下面的Datastax Java Driver就是生成它的那个。如果你想跟进,你能否在GitHub上发一个完整的错误?

与此同时,如果您只是尝试测试,我会建议您不要依赖wasApplied,而是直接阅读。

您可以通过回读生成一些测试数据和更新的值,执行更新,并比较Cassandra中的最终结果。 wasApplied有条件批量更新已知问题,但除此之外,我希望这可以解决。