Java 两个对象的GridGain连接查询

Java 两个对象的GridGain连接查询,java,caching,join,gridgain,Java,Caching,Join,Gridgain,我使用GridGain作为我的数据对象POJO的本地内存存储,我需要查询这些对象并选择具有特定值的适当对象。让我们考虑以下情况: class Person { public Long id; public String name; public Organization organization; } class Organization{ public Long id; public String name; } 您能否建议如何进行查询以检索某些组织的所

我使用GridGain作为我的数据对象POJO的本地内存存储,我需要查询这些对象并选择具有特定值的适当对象。让我们考虑以下情况:

class Person {

    public Long id;
    public String name;
    public Organization organization;
}

class Organization{

  public Long id;
  public String name;
}
您能否建议如何进行查询以检索某些组织的所有人员? 我尝试了以下几点:

final GridCacheProjection<GridCacheAffinityKey<Long>, Person> appCache = cache.projection(GridCacheAffinityKey.class, Person.class);

final GridCacheQuery<Map.Entry<GridCacheAffinityKey<Long>, Person>> query = appCache.queries().createSqlQuery(Person.class, "from Person, Organization " + "where Person.organization.id = " + "Organization.id = ?");
但是没有运气。我发现了很多使用Person.id=Organization.id=?然而,我将组织作为Person类中的对象,所以如何以这种方式编写查询或检索数据


提前感谢您的提示。

您的代码看起来不正确

看看GridGain附带的GitHub上的可用功能

特别是在进行连接的零件上:

// Create query which joins on 2 types to select people for a specific organization.
GridCacheQuery<Map.Entry<GridCacheAffinityKey<UUID>, Person>> qry = cache.queries().
    createSqlQuery(Person.class,
        "from Person, Organization " + "where Person.orgId = Organization.id and " +
        "lower(Organization.name) = lower(?)");

// Execute queries for find employees for different organizations.
print("Following people are 'GridGain' employees: ", qry.execute("GridGain").get());
print("Following people are 'Other' employees: ", qry.execute("Other").get());

你好,德米特里,谢谢你的回复。我看到了这个例子,并基于它创建了我的代码。然而,GridGain文档描述的场景期望您的对象是DB schema=>的精确表示,它们之间的引用是由外键/UUID完成的,它是一个值。然而,在我的数据模型中,Person类作为整个组织对象的引用。因此,我无法简单地通过将Person.id与organization.id与某个单一值进行比较来进行搜索。难道没有办法做到这一点吗?也许通过实现一些比较/相等的方法?