繁体   English   中英

cassandra datastac Codec not found varchar &lt;-&gt; java.util.Map<java.lang.string, java.lang.string></java.lang.string,>

[英]cassandra datastac Codec not found varchar <-> java.util.Map<java.lang.String, java.lang.String>

我们在代码中使用了 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;

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

也许你有 JSON 字符串而不是真正的 Cassandra map? 在这种情况下,您可以使用现有的 JSON 编解码器之一。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM