我想在哪里进行休眠查询

我正在获得多个员工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/

10-14 12:51
查看更多