2016-11-23 1 views
0

J'ai une table dans Cassandra que j'essaie d'itérer et d'extraire des choses. J'utilise le pilote datastax java 3.1.0.Codec non trouvé pour l'opération demandée: [horodatage <-> java.util.UUID]

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

Voici le code:

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; 
} 

ci-dessous est l'exception:

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

Est-il possible que je peux utiliser JodaTime en créant un codec si possible au lieu d'utiliser UUID ici dans mon code?

Répondre

1

Modifier le code ci-dessous

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

à

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

Vous pouvez obtenir joda DateTime de date

DateTime lastModifiedDateTime = new DateTime(lastModifiedDate); 
+0

'Incompatibilité de type: ne peut pas convertir LocalDate à Date'. J'ai déjà essayé et c'est l'erreur que je recevais. Je voulais aussi utiliser JodaTime ici, donc je peux le faire en créant un codec mais je ne sais pas comment .. – john

+0

Ouais mais ma question était aussi comment puis-je utiliser JodaTime au lieu de le prendre comme date. Je lisais [this] (http://docs.datastax.com/en/developer/java-driver/3.1/manual/custom_codecs/extras/) mais je n'ai pas suivi. – john