0
我使用GridGain作为我的数据对象(pojos)的本地内存中存储,我需要查询这些对象并选择具有特定值的适当值。让我们考虑以下情况:GridGain加入查询两个对象
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 =?的例子。然而,我有Organization作为Person类中的对象,因此如何以这种方式编写查询或检索数据?
在此先感谢您的任何提示。
德米特里您好,感谢您的回应:
在,它的加入部分看看在GitHub上可用CacheQueryExample(也随GridGain)
具体。我看到这个例子,并基于它创建我的代码。然而,由GridGain文档描述的场景期望您的对象(Person,Organization)是DB schema =>的准确表示,它们之间的引用是通过作为单个值的“外键”/ UUID完成的。然而,在我的数据模型中,我的Person类作为整个Organization对象的引用。因此,我没有可能仅仅通过将Person.id与Organisation.id与单个值进行比较来进行搜索。没有办法如何做到这一点?也许通过实施一些比较/平等的方法? – user3392697