返回两个对象的 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以序列化形式编辑。