2017-05-30 11 views
0

IgniteとCassandraを統合しようとしています。私はBLOBとして永続化戦略を使用しています。私がプログラムを実行すると、 "com.datastax.driver.core.exceptions.CodecNotFoundException:要求された操作でコーデックが見つかりませんでした:com.datastax.driver.coreの[varchar < - > java.nio.HeapByteBuffer]のようなエラーが表示されます。ここCodecRegistry.notFound(CodecRegistry.java:679) 」カサンドラインテグレーションで点火する

は私の永続化xmlファイルはmain.cppに

int main() 
{ 
IgniteConfiguration cfg; 
cfg.springCfgPath = "apache-ignite-fabric-2.0.0-bin/cassandra-config.xml"; 
Ignite grid = Ignition::Start(cfg); 
Cache<Test, Test> cache = grid.GetCache<Test, Test>("cache1"); 
Test obj; 
cache.LoadCache(); 
Test key; 
key.key = "123dfsdfs"; 
obj.value = "sdfsf"; 
cache.Put (key,obj); 
return 0; 
} 

答えて

1

エラーがカサンドラの列の種類を意味

<persistence keyspace="sam" table="key"> 
<keyPersistence class="java.lang.String" strategy="BLOB" column="key"/> 
<valuePersistence class="java.lang.String" strategy="BLOB" column="value"/> 
</persistence> 

です varchar、それにBLOBを書き込もうとしています。したがって、失敗。

しかし、なぜ文字列にBLOB戦略を使用しますか?代わりにPRIMITIVE戦略を使用して、varchar列にそのまま文字列を書き込むことができます。

+0

私がストラテジーを変更したとき、それはストリングのためにうまく動作します:)。しかし、実際には、 "java.lang.String"の代わりにクラスを使いたいと思っています。だから私はkeyPersistenceクラス= "com.test.Test"を変更しました。 "原因:java.lang.IllegalStateException:クラス 'com.test.Test'のオブジェクトを直列化できませんでした原因:java.io.NotSerializableException:com.test.Test" –

+1

私はそれが 'テストは 'Serializable'ではありません:) –

+0

私はPOJOに戦略を変更している場合、同じ結果を得ることは可能ですか? (私はPOJOを使用している場合、私は直列化の権利を避けることができますか?) –

関連する問題