嗨,我目前正试图设置我的CQL道,以实现一些查询功能,但我找不到一种方法来把任何对象的集合作为一个参数,因为我一直得到这个错误的编解码器:Codec not found for requested operation: [TEXT <-> java.util.List<java.lang.String>]
我试着使用这个,但它不工作:
@Select(customWhereClause = "labels CONTAINS :labels", perPartitionLimit = "1")
fun dependenciesByLabels(@CqlName("labels") labels: Collection<String>): PagingIterable<Dependency>
字符串
3条答案
按热度按时间xmjla07d1#
我想我在Cassandra中的认知是不够的。事实上,似乎我们可以在集合上使用多个值的CONTAINS cassandra运算符:
这个可以用:
字符串
这个不行:
型
nlejzf6q2#
您可能需要为您的集合定义一个编解码器,这里有一些例子:https://docs.datastax.com/en/developer/java-driver/3.5/manual/custom_codecs/#creating-custom-codecs-for-user-defined-types-ud-ts如果这没有帮助,请包括您的集合/类型定义。
z3yyvxxp3#
字符串
因此,此错误消息意味着您正在尝试将定义为
TEXT
(UTF字符串)的列Map到JavaList<String>
。它看起来确实像是在应用程序端使用了一个集合,所以我会检查表定义并确保列定义为
List<TEXT>
。