我有一个如下所示的缓存:
密钥:UUID 值:数组[长]
我想获得与特定值对应的密钥。那里的部分是什么样的?
我试过“值=?”和“_value =?”但这些显然无效。
答案 0 :(得分:0)
哟!
Array [Long]是什么意思?它只是很长[]或者您使用的是Scala吗?
最简单(但不是最有效)的方法是使用带有谓词{{3}}的扫描查询。
为了获得最佳性能,最好将您的值编入索引,因此我建议为您的数组安装一个特殊的包装类:
class MyArray implements Comparable<MyArray>, Serializable {
private long[] arr;
// implement compareTo,hashCode,equals
@GridCacheQuerySqlField(index = true)
public MyArray indexedArray() {
return this;
}
}
然后查询看起来像
"indexedArray = ?"
作为参数,您必须传递MyArray实例。索引值有点脏,但这是现在唯一的方法。
顺便说一句,缓存键的列名和SQL中的值是_key和_val但不是_value,你可以编写像
这样的查询"_val = ? and _key > ?"
当然你必须确保你的键和值至少实现hashCode并且正确等于,最好实现Comparable。