[英]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.