2016-11-23 6 views
0

私はカサンドラのテーブルを持っています。私はdatastax javaドライバ3.1.0を使用しています。以下は要求された操作でコーデックが見つかりませんでした:[タイムスタンプ<-> java.util.UUID]

CREATE TABLE test (
    client_id int, 
    process_id text, 
    last_modified_date timestamp, 
    PRIMARY KEY ((client_id), process_id) 
) 

コードです:以下

private List<MetaHolder> getMetaHolder() { 
    List<MetaHolder> metaHolder = new ArrayList<>(); 
    String sql = "select * from test where client_id=1"; 
    try { 
     BoundStatement bs = Cache.getInstance().getStatement(sql); 
     bs.setConsistencyLevel(ConsistencyLevel.QUORUM); 

     ResultSet res = session.execute(bs); 
     Iterator<Row> rows = res.iterator(); 
     while (rows.hasNext()) { 
     Row row = rows.next(); 
     String processId = row.getString("PROCESS_ID"); 
     // this line throws exception 
     UUID lastModifiedDate = row.getUUID("LAST_MODIFIED_DATE"); 
     MetaHolder metadata = 
      new MetaHolder(processId, lastModifiedDate); 
     metaHolder.add(metadata); 
     } 
    } catch (Exception ex) { 
     LOGGER.logError("error= ", ExceptionUtils.getStackTrace(ex)); 
    } 
    return metaHolder; 
} 

例外です:

error= com.datastax.driver.core.exceptions.CodecNotFoundException: Codec not found for requested operation: [timestamp <-> java.util.UUID] 

は、可能ならば、私は代わりにここにUUIDを使用するコーデックを作成することにより、JodaTimeを使用することができる方法はあります私のコードで?

答えて

1

変更以下のコード

Date lastModifiedDate = row.getTimestamp("LAST_MODIFIED_DATE"); 

UUID lastModifiedDate = row.getUUID("LAST_MODIFIED_DATE"); 

あなたは日

DateTime lastModifiedDateTime = new DateTime(lastModifiedDate); 
+0

'型の不一致からジョダ日時を取得することができます。Date'にLOCALDATEから変換することはできません。私はすでにそれを試して、これは私が得ていたエラーです。また、私はコーデックを作成することでそれを行うことができるように見えるので、ここではJodaTimeを使いたいと思っています。 – john

+0

ええ、私の質問は、どのように日付として取る代わりにJodaTimeを使用することができます。私は[この](http://docs.datastax.com/en/developer/java-driver/3.1/manual/custom_codecs/extras/)を読んでいたが、didn; tはかなり続く。 – john

関連する問題