最后一个组件上的复合类型通配符

brgchamk  于 2021-06-15  发布在  Cassandra
关注(0)|答案(1)|浏览(369)

我有以下代码段。组合柱有两个构件。如果我只知道第一个组件,是否可以检索列?在某种意义上,对组合的某些组件(尤其是最后一个组件)应用一些dilcards。
谢谢。

Mutator<String> mutator = HFactory.createMutator(keyspace, stringSerializer);
    String key="TX:512";
    String CF="StateNpaIndexStatic";
    HColumnImpl<Composite, String> column = new HColumnImpl<Composite, String>(cs, StringSerializer.get());
    column.setClock(keyspace.createClock());
    Composite dc = new Composite();
    dc.add(0, "review");
    dc.add(1, "T23333");
    column.setName(dc);       
    column.setValue("aa");
    mutator.addInsertion(key, CF, column);
    mutator.execute();
     Composite start = new Composite();
    start.add(0, start0);
    start.add(1,"*");
    Composite end = new Composite();
    end.add(0, end0);
    end.add(1, "*");

    SliceQuery<String,Composite, String> sliceQuery =HFactory.createSliceQuery(keyspace,stringSerializer, CompositeSerializer.get(), StringSerializer.get());
    sliceQuery.setColumnFamily(CF);
    sliceQuery.setKey(key);
    sliceQuery.setRange(start, start, false, 1);
    QueryResult<ColumnSlice<Composite, String>> result = sliceQuery.execute();
    System.out.println("Result :"+result.get().getColumns().size()+"=========="+result);
v09wglhw

v09wglhw1#

您不必指定组合中的所有组件。您可以从末尾(而不是中间或开头)漏掉一个,然后对这些列执行范围查询,就像将空范围传入普通列上的get\u slice查询一样。
在您的示例中,如果您使用

Composite start = new Composite();
start.addComponent(0, start0, ComponentEquality.EQUAL);
Composite end = new Composite();
end.add(0, end0, ComponentEquality.GREATER_THAN_EQUAL);

你会得到从开始到结束的一切。componentequality标志设置是包含还是排除结束范围。上面的包括开始和结束。您将排除componentequality.greater\u than\u equal开头;排除最终使用componentequality.equal。

相关问题