我在apache中配置了一个Datagrid Cache。查询字段使用CacheTypeMetada
配置。
但我无法使用sql从Cache中检索值。
如果我更改配置为@QueryIndexType (index = true)
的查询字段
查询返回结果。
我的问题是,是否有任何配置我缺少使用CacheTypeMetadata进行缓存配置的SQL查询查询?
三江源。
提供我的代码段。
CacheConfiguration<TestKey, Test> testCacheCfg = new CacheConfiguration<>(TEST_CACHE);
使用CacheTypeMetadata配置查询结构。
private static Collection<CacheTypeMetadata> testCacheMetadata(){
Collection<CacheTypeMetadata> types = new ArrayList<>();
CacheTypeMetadata type = new CacheTypeMetadata();
type.setKeyType(TestKey.class.getName());
type.setValueType(Test.class.getName());
Map<String, Class<?>> qryFlds = type.getQueryFields();
qryFlds.put("testId", int.class);
qryFlds.put("orgId", String.class);
qryFlds.put("md5", String.class);
Map<String, Class<?>> ascFlds = type.getAscendingFields();
ascFlds.put("testId", int.class);
ascFlds.put("orgId", String.class);
types.add(type);
return types;
}
查询调用:
private static void sqlQuery(Ignite ignite, TestKey testKey) {
IgniteCache<TestKey, Test> cache = Ignition.ignite().cache(TEST_CACHE);
// SQL clause
String sql = "where testId = ? and orgId = ?";
// Execute query
System.out.println("query result" +
cache.query(new SqlQuery<TestKey, Test>(Test.class, sql).
setArgs(testKey.getTestId(), testKey.getOrgId())).getAll());
}
答案 0 :(得分:0)
你的例子适合我。你能看一下我的代码,看看你的代码是否有任何不同(见下面的链接)?
你在哪个版本?