簡體   English   中英

找不到請求的操作的編解碼器:[timestamp <-> java.util.UUID]

[英]Codec not found for requested operation: [timestamp <-> java.util.UUID]

我在Cassandra中有一張桌子,試圖對其進行迭代並從中提取東西。 我正在使用datastax Java驅動程序3.1.0。

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]

有什么辦法可以通過創建編解碼器來使用JodaTime,而不是在代碼中使用UUID?

更改以下代碼

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

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

您可以從日期獲取joda DateTime

DateTime lastModifiedDateTime = new DateTime(lastModifiedDate);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM