返回两个对象的 GridGain 连接查询
GridGain join query with both objects returned
作为 GridGain 缓存查询的结果,是否可以return连接的两个对象?
我们可以从连接的一侧或两侧获取字段(然后使用它们分别检索每个对象),但查看示例和文档似乎无法同时获取两个对象。
谢谢!
首先,GridGain开源版现在是Apache Ignite,所以我建议切换。
在 Ignite 中,您可以 return 使用 SqlFieldsQuery 从查询中准确获取您需要的字段,如下所示:
SqlFieldsQuery sql = new SqlFieldsQuery(
"select fieldA1, fieldA2, fieldB3 from SomeTypeA a, SomeTypeB b " +
"where a.id = b.otherId");
try (QueryCursor<List<?>> cursor = cache.query(sql) {
for (List<?> row : cursor)
System.out.println("Row: " + row);
}
在GridGain开源版中,您也可以使用GridGain字段查询API。
@dejan- 在 GridGain 和 Apache Ignite 中,您可以将 _key 和 _val 功能与 SqlFieldsQuery 一起使用,以便 return 一个对象。例如-
SqlFieldsQuery sql = new SqlFieldsQuery(
"select a._key, a._val, b._val from SomeTypeA a, SomeTypeB b " +
"where a.id = b.otherId");
try (QueryCursor<List<?>> cursor = cache.query(sql) {
for (List<?> row : cursor)
System.out.println("Row: " + row);
}
请注意,在这种情况下,对象将return以序列化形式编辑。
作为 GridGain 缓存查询的结果,是否可以return连接的两个对象?
我们可以从连接的一侧或两侧获取字段(然后使用它们分别检索每个对象),但查看示例和文档似乎无法同时获取两个对象。
谢谢!
首先,GridGain开源版现在是Apache Ignite,所以我建议切换。
在 Ignite 中,您可以 return 使用 SqlFieldsQuery 从查询中准确获取您需要的字段,如下所示:
SqlFieldsQuery sql = new SqlFieldsQuery(
"select fieldA1, fieldA2, fieldB3 from SomeTypeA a, SomeTypeB b " +
"where a.id = b.otherId");
try (QueryCursor<List<?>> cursor = cache.query(sql) {
for (List<?> row : cursor)
System.out.println("Row: " + row);
}
在GridGain开源版中,您也可以使用GridGain字段查询API。
@dejan- 在 GridGain 和 Apache Ignite 中,您可以将 _key 和 _val 功能与 SqlFieldsQuery 一起使用,以便 return 一个对象。例如-
SqlFieldsQuery sql = new SqlFieldsQuery(
"select a._key, a._val, b._val from SomeTypeA a, SomeTypeB b " +
"where a.id = b.otherId");
try (QueryCursor<List<?>> cursor = cache.query(sql) {
for (List<?> row : cursor)
System.out.println("Row: " + row);
}
请注意,在这种情况下,对象将return以序列化形式编辑。