如何在Cassandra中为更新集合(Set)编写QueryBuilder查询

问题描述 投票:1回答:2

我想在java中为以下CQL命令编写QueryBuilder查询。

UPDATE category_utility
      SET imageurls = imageurls + {'http://image1.jpg','http://image2.jpg','http://image3.jpg'} WHERE category_title = 'cat1';

在JAVA中,我尝试使用以下内容。我不知道如何在QueryBuilder命令中编写添加set操作。

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));
}
java cassandra cassandra-2.0
2个回答
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));
}

1
投票

如果你看一下QueryBuilder类,有add,addAll和remove,removeAll方法来处理set更新。

© www.soinside.com 2019 - 2024. All rights reserved.