Astyanax の入門ガイドには、これを行う例が記載されています。しかし、あなたの質問に基づいて、列のメタデータで指定された複数の列の値の型 (バリデーター) に混乱がありますが、ColumnFamily 契約は、ColumnFamily の値が単一の型であることを暗示しているようです。
舞台裏では、Astyanax はとにかく ByteBuffer との間でシリアライズしようとしています (プリミティブ用のシリアライザーを使用するか、指定したシリアライザーを使用します)...しかし、この ColumnFamily api/contract は、読み取り/書き込みのコンテキストで取得されます (プログラムとは対照的に)列ファミリーの定義)、誤解を招く可能性があります。
まず、Astyanax を初期化する必要があります ( Initialization )。次に、次のようにします (入門ガイドから変更):
ColumnFamily<String, String> CF_USER_ATTR =
new ColumnFamily<String, String>(
"user_attr2", // Column Family Name
StringSerializer.get(), // Key Serializer
StringSerializer.get()); // Column Serializer
OperationResult<ColumnList<String>> result =
ks.prepareQuery(CF_USER_ATTR)
.getKey("Key1")
.execute();
ColumnList<String> columns = result.getResult();
// Lookup columns in response by name
String attr_value = columns.getColumnByName("attr_value").getStringValue();
long timestamp = columns.getColumnByName("last_sync_timestamp").getLongValue();
String digest = columns.getColumnByName("last_sync_digest").getStringValue();
// Or, iterate through the columns
for (Column<String> c : result.getResult()) {
System.out.println(c.getName());
}
詳細については、Astyanax 入門を参照してください。