2016-12-27 3 views
0

I CodecNotFoundException mit dem unten stacktrace habe, während auf Einsatz Daten versuchen mit Anmerkungen von datastax java driver für das Mapping mit Cassandra.inkonsistente Fehler/Ausnahme, Codec nicht für angeforderte Operation gefunden: [<-> float java.lang.Object] und [int <-> java.lang.Object]

Ausnahme 1 ::

Exception in thread "main" com.datastax.driver.core.exceptions.CodecNotFoundException: Codec not found for requested operation: [float <-> java.lang.Object] 
    at com.datastax.driver.core.exceptions.CodecNotFoundException.copy(CodecNotFoundException.java:56) 
    at com.datastax.driver.core.exceptions.CodecNotFoundException.copy(CodecNotFoundException.java:25) 
    at com.datastax.driver.mapping.DriverThrowables.propagateCause(DriverThrowables.java:41) 
    at com.datastax.driver.mapping.Mapper.save(Mapper.java:275) 
    at com.coreanalytics.componentConfig.ChartConfigInteraction.saveChartConf(ChartConfigInteraction.scala:14) 
    at com.coreanalytics.componentConfig.testing$.delayedEndpoint$com$coreanalytics$componentConfig$testing$1(ChartConfigInteraction.scala:23) 
    at com.coreanalytics.componentConfig.testing$delayedInit$body.apply(ChartConfigInteraction.scala:18) 
    at scala.Function0$class.apply$mcV$sp(Function0.scala:34) 
    at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12) 
    at scala.App$$anonfun$main$1.apply(App.scala:76) 
    at scala.App$$anonfun$main$1.apply(App.scala:76) 
    at scala.collection.immutable.List.foreach(List.scala:381) 
    at scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:35) 
    at scala.App$class.main(App.scala:76) 
    at com.coreanalytics.componentConfig.testing$.main(ChartConfigInteraction.scala:18) 
    at com.coreanalytics.componentConfig.testing.main(ChartConfigInteraction.scala) 

Ausnahme 2 ::

Exception in thread "main" com.datastax.driver.core.exceptions.CodecNotFoundException: Codec not found for requested operation: [int <-> java.lang.Object] 
    at com.datastax.driver.core.exceptions.CodecNotFoundException.copy(CodecNotFoundException.java:56) 
    at com.datastax.driver.core.exceptions.CodecNotFoundException.copy(CodecNotFoundException.java:25) 
    at com.datastax.driver.mapping.DriverThrowables.propagateCause(DriverThrowables.java:41) 
    at com.datastax.driver.mapping.Mapper.save(Mapper.java:275) 
    at com.coreanalytics.componentConfig.ChartConfigInteraction.saveChartConf(ChartConfigInteraction.scala:14) 
    at com.coreanalytics.componentConfig.testing$.delayedEndpoint$com$coreanalytics$componentConfig$testing$1(ChartConfigInteraction.scala:23) 
    at com.coreanalytics.componentConfig.testing$delayedInit$body.apply(ChartConfigInteraction.scala:18) 
    at scala.Function0$class.apply$mcV$sp(Function0.scala:34) 
    at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12) 
    at scala.App$$anonfun$main$1.apply(App.scala:76) 
    at scala.App$$anonfun$main$1.apply(App.scala:76) 
    at scala.collection.immutable.List.foreach(List.scala:381) 
    at scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:35) 
    at scala.App$class.main(App.scala:76) 
    at com.coreanalytics.componentConfig.testing$.main(ChartConfigInteraction.scala:18) 
    at com.coreanalytics.componentConfig.testing.main(ChartConfigInteraction.scala) 

Das Problem ist, ich diese zwei verschiedene Ausnahme bin immer, wenn versuchen, den gleichen Code auszuführen. (gleiche Tabelle, gleiche Einfügeoperation, keine Änderung) (zB für erstmalige Ausführung bekomme ich Ausnahme mit float und als zweites oder drittes Mal bekam ich mit int einen) Ich habe meine Tabelle zweimal überprüft, es scheint nicht so jedes Problem mit Typen, aber als warum ich diese Ausnahme bekomme?

Wie meine Tabelle mit etwa 50 Spalten mit etwa 8 UDTs ist es schwierig, das gesamte Schema hier zu zeigen. Ich habe auch den UDTs-Feldtyp mit den Eigenschaften von Beans überprüft. Und ya, ich benutze Scala all diese Sachen.

Hinweis: Ich habe versucht, Guava Abhängigkeit zu aktualisieren, aber es hat ein Problem mit FutureCallBack, wie es entfernt wird.

Antwort

0

Dies scheint mir ein einfaches "bindendes" Problem. Wie der Fehler deutlich sagt, binden Sie ein int/float-Feld an ein Objekt, und der Treiber kann diese Zuordnung nicht vornehmen, weil er nicht weiß, wie er es tun soll.

Die Lösung ist einfach, Sie müssen sicherstellen, dass jeder CF seine Zuordnung direkt auf Anwendungsebene getan hat.

Wenn Sie nicht verstehen können, wenn es fehlschlägt, legen Sie Ihre Tabellendefinition hier (auch wenn es sehr groß ist), und vergessen Sie nicht, hier auch den Code zu schreiben, der Daten an Spalten bindet.

+0

Ich weiß es verbindlich Problem sein sollte aber ich zweimal überprüft. Und selbst wenn es einen Fehler beim Binden gibt, warum zeigt es eine andere Ausnahme? Und mein Tabellenschema hat 8 UDTs, das macht mir nichts aus, aber du denkst, ich sollte hier 9 Tabellenschemas und 9 Bean-Klassen posten? –

0

Die CodecNotFoundException wird ausgelöst, wenn der CQL-Typ nicht mit dem Typ des Java-Attributs übereinstimmt, das zugeordnet werden soll.

Siehe die folgenden Links:

Dieses eine ähnliche Fragen zu sein scheint: Datastax Cassandra Driver throwing CodecNotFoundException

+0

@Phillip Ich bin durch diese Links gegangen. Ich habe das Mapping aus diesen Dokumenten gelernt und es in meiner App verfolgt. Trotzdem habe ich dieses Problem. Ich habe auch Mapping in anderen Tabellen angewendet und es funktioniert wie erwartet in derselben App. –

Verwandte Themen