2013-05-28 6 views
0

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

Спасибо.

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

ответ

0

Вам не нужно указывать все компоненты в композите. Вы можете пропустить их в конце (но не в середине или в начале) и сделать запрос диапазона на них, а скорее пропустить пустые диапазоны в запрос 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.

+0

Спасибо. Я попробовал start.addComponent (0, «review», ComponentEquality.EQUAL) и \t end.addComponent (0, «review», ComponentEquality.LESS_THAN_EQUAL); но он, похоже, не работает. Я также пытался с LESS_THAN_EQUAL с обеих сторон. –

+0

Ваш код имеет «sliceQuery.setRange (начало, начало, ложь, 1); но должен быть «sliceQuery.setRange (начало, конец, ложь, 1);». Вы использовали этот код только сейчас? Примечание. Я также исправил свой пост - конечный диапазон должен использовать GREATER_THAN_EQUAL, а не LESS_THAN_EQUAL. – Richard

+0

Спасибо. Это исправило это. –

 Смежные вопросы

  • Нет связанных вопросов^_^