Кассандра - Обновление набора типов столбца - PullRequest
0 голосов
/ 18 мая 2018

У нас есть таблица в кассандре со следующей структурой:

cities_in_state(state TEXT, zip TEXT, cities SET<TEXT>, PRIMARY KEY ((zip, 
state)))

Мне нужно подтвердить значение городов для штата с помощью драйвера Java, Иметь этот код:

BoundStatement bound = session().prepare("UPDATE cities_in_state SET cities 
= cities + ? WHERE zip = ? and state = ?").bind();
bound.setSet(1, cities);
bound.setString(2, "ZIP1");
bound.setString(3, "state1");

, который выдает ошибку типа "HashSet не может быть приведен к String" И мне всегда нужно добавлять больше городов в существующие города. Итак, как бы мне добавить столбец набора в Кассандре со связанными параметрами.

1 Ответ

0 голосов
/ 18 мая 2018

Следующий фрагмент кода работает просто отлично:

PreparedStatement prepared = session.prepare("UPDATE test.st SET cities = cities + ? WHERE zip = ? and state = ?");
BoundStatement bound = prepared.bind(Collections.singleton("t2"), "2", "1");
session.execute(bound);

Ваша проблема в том, что вы начинаете считать с 1, в то время как драйвер Java использует индексы на основе 0.Следующий фрагмент кода работает, просто найдите, если я уменьшу каждый индекс на 1:

BoundStatement bound2 = prepared.bind();
bound2.setSet(0, Collections.singleton("t3"));
bound2.setString(1, "2");
bound2.setString(2, "1");
session.execute(bound2);
...