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 ответ
Это транзитное значение для фантомного драйвера, что означает, что нижележащий драйвер Java Datastax является тем, который генерирует это. Если вы хотите продолжить, не могли бы вы опубликовать полную ошибку на GitHub?
Между тем, я бы предложил не полагаться на wasApplied
если вы просто пытаетесь проверить, а вместо этого делаете прямое чтение.
Вы генерируете некоторые тестовые данные и обновленные значения, выполняете обновление и сравниваете конечные результаты в Cassandra, читая их обратно. Есть известные проблемы с wasApplied
с условными пакетными обновлениями, но кроме этого я ожидаю, что это сработает.