找不到cassandra datastac编解码器varchar <-> java.util.Map <java.lang.String,java.lang.String>

时间:2019-10-31 19:16:46

标签: java cassandra datastax

我们在代码中使用了dse-driver 1.8.2,我将实体定义为:

public class HistoryByEmail implements Serializable {
  ...
  @Column(name = ADDITIONAL_DATA)
  private Map<String, String> additionalData;
}

当我尝试从该列中读取值时,出现此错误:

com.datastax.driver.core.exceptions.CodecNotFoundException: Codec not found for requested operation: [varchar <-> java.util.Map<java.lang.String, java.lang.String>]

我在该列添加了编解码器:

  @Column(name = ADDITIONAL_DATA, codec = TypeCodec.MapCodec.class)
  private Map<String, String> additionalData;

但是代码不会被编译,还尝试了以下方法,但没有一个起作用:

  @Column(name = ADDITIONAL_DATA, codec = TypeCodec.AbstractMapCodec<String, String>.class)
  private Map<String, String> additionalData;

  @Column(name = ADDITIONAL_DATA, codec = TypeCodec.AbstractMapCodec<>.class)
  private Map<String, String> additionalData;

1 个答案:

答案 0 :(得分:0)

从该错误看来,相应的列的类型为text,而不是map<text, text>-更改表的定义或调整变量类型。

也许您有JSON字符串而不是真正的Cassandra映射?在这种情况下,您可以使用existing JSON codecs之一。