Подстановочный знак составного типа на последнем компоненте

У меня есть следующий сегмент кода. Составной столбец состоит из двух компонентов. Можно ли получить столбцы, если я знаю только первый компонент? В каком-то смысле применяются некоторые выборочные двойные карты к некоторым компонентам композита (особенно к последнему компоненту).

Спасибо.

 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);

person Pee One    schedule 28.05.2013    source источник


Ответы (1)


Вам не нужно указывать все компоненты в композите. Вы можете пропустить их в конце (но не в середине или начале) и выполнить для них запрос диапазона, а не передавать пустые диапазоны в запрос get_slice для обычных столбцов.

Если в вашем примере вы сделали запрос с

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

вы получите все, что начинается с start0 до end0. Флаги ComponentEquality устанавливают, следует ли включать или исключать конечные диапазоны. Вышеупомянутые включают как начало, так и конец. Вы бы исключили начало с ComponentEquality.GREATER_THAN_EQUAL; чтобы исключить конечное использование ComponentEquality.EQUAL.

person Richard    schedule 28.05.2013
comment
Спасибо. Я пробовал start.addComponent(0, review,ComponentEquality.EQUAL) и end.addComponent(0, review,ComponentEquality.LESS_THAN_EQUAL); но, похоже, это не работает. Я также пробовал с LESS_THAN_EQUAL с обеих сторон. - person Pee One; 28.05.2013
comment
В приведенном выше коде есть 'sliceQuery.setRange (start, start, false, 1);' но должно быть «sliceQuery.setRange (начало, конец, ложь, 1);». Вы использовали этот код только сейчас? Примечание. Я также исправил свой пост: в конце диапазона следует использовать GREATER_THAN_EQUAL, а не LESS_THAN_EQUAL. - person Richard; 28.05.2013