有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java GridGain模板搜索

有人知道是否有可能使用GridGain对存储在内存数据网格中的对象执行模板搜索吗?让我们考虑下面的问题。您有以下课程:

class Employee{
 private Long id;
 private String name;
 private Address address;
 private Account account;
}

class Account{
 private Long id;
 private String accountNr;
}

class Address{
 private String street;
 private String postcode;
 private String city;
 private Country country;
}

然后您就有了这样一个搜索模板:

Address address = new Address(null, null, "New York", null);
Employee template = new Employee(null, null,address, null);
grid.read(template); 
  • 这将找到所有居住在纽约的员工。是否有可能在GridGain中实现此功能?如果是的话,你能告诉我怎么做吗? 我正在考虑使用sql连接来执行此操作,但是我需要在运行时创建这样一个查询,并且在Where子句之后始终使用不同数量的参数。。。我无法解决这个问题

我将感谢任何帮助/提示

彼得


共 (1) 个答案

  1. # 1 楼答案

    您可以使用以下内容:

    public class Address {
        @GridCacheQuerySqlField(unique = true)
        private long id;
        @GridCacheQuerySqlField
        private String street;
        @GridCacheQuerySqlField
        private String postcode;
        @GridCacheQuerySqlField
        private String city;
        @GridCacheQuerySqlField
        private Country country;
    }
    
    public class Employee {
        @GridCacheQuerySqlField(unique=true)
        private long id;
    
        @GridCacheQuerySqlField
        private long addressId; // Address ID.
    
        // Not indexed.
        private String name;
    }
    

    然后执行查询:

    GridCacheQuery<Map.Entry<Long, Employee>> qry = cache.queries().createSqlQuery(Employee.class,
        "from Employee, Address where Employee.addressId = Address.id " +
            "and Address.name = ?");
    // Query all nodes to find all cached CompanyZ employees in New York
    qry.execute("CompanyZ","New York");