我想在哪里进行休眠查询
我正在获得多个员工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仅为1。所以我设计的是:
criteria.add(Restrictions.and(Restrictions.or(c1,c2), c3));
但是问题是,在OR中,我无法为以下项设置多个员工ID:
Restrictions.eq("employee.employeeId", employee.getEmployeeId())
最佳答案
首先,您需要为表lms_employee_leave_records创建实体映射作为EmployeeRecords
有关映射的更多信息
https://docs.jboss.org/hibernate/stable/annotations/reference/en/html/entity.html
(我假设在创建实体时,要使用的成员名称与表中的列名称相同)
使用休眠原生API,您将有两种选择
高品质
以下是您可以使用的HQL查询
from EmployeeRecords as e
where e.employee_id in (2633,2634,2635)
and e.leave_category_id=1;
通过在会话上使用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 - 我想要以下SQL查询的 hibernate 查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38068870/