Как написать QueryBuilder Query для обновления коллекций (Set) в Кассандре
Я хочу написать QueryBuilder запрос для следующей команды CQL в Java.
UPDATE category_utility
SET imageurls = imageurls + {'http://image1.jpg','http://image2.jpg','http://image3.jpg'} WHERE category_title = 'cat1';
В JAVA я пытаюсь с этим следующим. Я не знаю, как написать добавить в операции набора в команде QueryBuilder.
public void addImageList(ArrayList<String> list, int categoryId) {
Statement = QueryBuilder.update("category_utility").with(QueryBuilder.set("imageurls", list.toString())).where(QueryBuilder.eq("img_category_id", categoryId));
}
2 ответа
Решение
Вы хотите использовать QueryBuilder.addAll(String, Set<?>)
, но этот метод требует Set
в качестве параметра, а не ArrayList
,
Поэтому вам нужно изменить ваш метод следующим образом:
public Statement addImages(Set<String> imageurls, int categoryId){
return QueryBuilder.update("category_utility")
.with(QueryBuilder.addAll("imageurls", imageurls))
.where(QueryBuilder.eq("img_category_id", categoryId));
}
Если вы посмотрите на класс QueryBuilder, есть методы add, addAll и remove, removeAll для обработки обновлений набора.