Retrieval using collections描述了集合的顺序。在我的例子中,从set <text>类型返回有序集合的特性就是我所需要的。但是反序列化为java Set和java Set的集合不提供元素顺序将保持的任何保证。因此,查询结果可能不同于java对象。
我尝试使用getSet(),它返回有序集合。我不明白为什么。也许这是由于“LinkedHashSet”的反序列化?
如何保证使用Java驱动程序获得Cassandra文档中指定的排序集合?
发布于 2020-11-10 00:59:29
由SetCodec<T>保证
package com.datastax.driver.core;
public abstract class TypeCodec<T> {
...
/**
* This codec maps a CQL {@link DataType#set(DataType) set type} to a Java {@link Set}.
* Implementation note: this codec returns mutable, non thread-safe {@link LinkedHashSet}
* instances.
*/
private static class SetCodec<T> extends AbstractCollectionCodec<T, Set<T>> {
private SetCodec(TypeCodec<T> eltCodec) {
super(DataType.set(eltCodec.cqlType), TypeTokens.setOf(eltCodec.getJavaType()), eltCodec);
}
@Override
protected Set<T> newInstance(int size) {
return new LinkedHashSet<T>(size);
}
}https://stackoverflow.com/questions/64755486
复制相似问题