我想在哪里进行 hibernate 查询
我收到多个员工 ID 和单个休假 ID。
我为以下内容设计了工作 MySql 查询:
select * from lms_employee_leave_records
where (employee_id=2633 or
employee_id=2634 or employee_id=2635)
and leave_category_id=1;
我做了一个示例查询: 我应该做什么查询,因为可能有N个没有。查询中的员工数,但休假 ID 只有一个。所以我的设计是:
criteria.add(Restrictions.and(Restrictions.or(c1,c2), c3));
但问题是,在 OR 中,我无法设置多个员工 ID:
Restrictions.eq("employee.employeeId", employee.getEmployeeId())
最佳答案
首先,您需要为表 lms_employee_leave_records 创建实体映射作为 EmployeeRecords
更多关于 map 的信息请点击这里 https://docs.jboss.org/hibernate/stable/annotations/reference/en/html/entity.html
(我假设当您创建实体时,您将使用的成员名称与表中的列名称相同)
使用 hibernate native API,您将有两个选择
HQL
下面是您可以使用的 HQL 查询
from EmployeeRecords as e
where e.employee_id in (2633,2634,2635)
and e.leave_category_id=1;
在 session 上使用createQuery()执行上述查询
有关 HQL 的更多信息请参见此处
https://docs.jboss.org/hibernate/orm/3.3/reference/en-US/html/queryhql.html
标准
下面是您在条件中的查询
session.createCriteria(EmployeeRecords.class)
.add(Restrictions.in("employee_id",list)) //list will have list of emp ids
.add(Restrictions.eq("leave_category_id",1))
.list()
更多关于标准的信息请点击此处
https://docs.jboss.org/hibernate/orm/3.3/reference/en-US/html/querycriteria.html
编辑
而不是这个
criteria.add(Restrictions.and(Restrictions.or(c1,c2), c3));
你可以这样做
Criterion c1=Restrictions.eq("employee_Id", empId1);
Criterion c2=Restrictions.eq("employee_Id", empId2);
Criterion c3=Restrictions.eq("employee_Id", empId1);
Criterion or=Restrictions.or(c1,c2,c3);
session.createCriteria(EmployeeRecords.class)
.add(or)
.add(Restrictions.eq("leave_category_id",1))
.list()
empId1、empId2、empId3 将是保存 emp id 的变量
关于mysql - 我想要一个 hibernate 查询来执行以下 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38068870/