如何使用IN子句查询ApacheIgnite

2022-08-22 00:00:00 java ignite

我在ApacheIgnite中创建了一个架构,如下所示:

---------------------------------------------
EmpId | EmpName | HomeZip | OfficeZip| Dept |
---------------------------------------------
1     | Sam     | 98123   | 98123    |  A   |
---------------------------------------------
2     | Jack    |  98123  | 98123    |  B   |
---------------------------------------------
3     | John    |  98124  | 98123    |  A   |
---------------------------------------------
4     | Kim     | 98124   | 98123    |  C   |
---------------------------------------------

如何执行以下查询:

  • 查找A部门员工的所有详细信息
  • 查找其home Zip与OfficeZip相同的员工的所有详细信息。

如何使用SQLQuery执行此操作并将响应映射到Model类

class Employee{
  private Integer empId;
  private String empName;
  private String homeZip;
  private String officeZip;
  private String dept;
}

我尝试按如下方式查询,但出现错误:

//For finding out employee in list of departments
SqlQuery sql = new SqlQuery(Employee.class, "dept in (?)).setArgs(deptList);
//For finding out employee with same zip for office and home:
SqlQuery sql = new SqlQuery(Employee.class, "homeZip = officeZip");

解决方案

跟随链接:https://apacheignite-sql.readme.io/docs/performance-and-debugging#sql-performance-and-usability-considerations

    SqlFieldsQuery sql = new SqlFieldsQuery(
                    "select e.* from Employee e join table(dept varchar = ?) d on e.dept = d.dept")
                   .setArgs(new Object[]{deptList.toArray()});

相关文章