2016-03-20 3 views
0

Как получить все строки из таблицы Oracle NoSQL с использованием TableAPI в Java? Я могу получить записи по значениям первичных ключей. Пример:Как получить все строки из таблицы Oracle NoSQL?

TableAPI tableH = kvstore.getTableAPI(); 
    Table myTable = tableH.getTable("myTable"); 
    PrimaryKey key = myTable.createPrimaryKey(); 
    key.put("item", "Hat"); 

    List<Row> myRows = null; 
    try { 
     myRows = tableH.multiGet(key, null, null); 
    } catch (ConsistencyException ce) { 
    } catch (RequestTimeoutException re) { 
    } 
    for (Row theRow: myRows) { 
     String itemType = theRow.get("item").asString().get(); 
    } 
    System.out.println(itemType); 

Но я не могу получить значения первичных ключей.

ответ

0

Чтобы изменить свой пример, вы получите все строки, используя пустой PrimaryKey для таблицы, и используйте один из методов TableAPI.tableIterator(). Примечание в примере TableAPI.getTable() будет выполнять удаленный вызов, поэтому дескриптор таблицы должен быть спрятан и повторно использован.

TableAPI tableH = kvstore.getTableAPI(); 
/* 
* get the Table, but be careful about doing this frequently, 
* as it performs a remote call. 
*/ 
Table myTable = tableH.getTable("myTable"); 
PrimaryKey key = myTable.createPrimaryKey(); 

try { 

    /* create and use an iterator on the Row value */ 
    TableIterator<Row> rowIter = tableH.tableIterator(key, null, null); 
    while (rowIter.hasNext()) { 
     Row row = rowIter.next(); 
     /* do something */ 
    } 

    /* 
    * Or... 
    * create and use an iterator on the PrimaryKey values. 
    * This is much faster than fetching the data as well if 
    * you only need fields in the primary key. 
    */ 
    TableIterator<PrimaryKey> keyIter = 
       tableH.tableKeysIterator(key, null, null); 
    while (keyIter.hasNext()) { 
     PrimaryKey key = rowIter.next(); 
     /* do something */ 
    } 
} catch (FaultException fe) { 
} 

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

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