Как написать 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 для обработки обновлений набора.

Другие вопросы по тегам