mysql - 我想要一个 hibernate 查询来执行以下 SQL 查询

标签 mysql hibernate

我想在哪里进行 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/

相关文章:

mysql - Visual Basic中 "?"和 "@"的区别

php - 数据库查询后将变量从一个 PHP 页面发送到另一页面

Mysql 从 2 个连接表进行排序,使用文件排序和临时表非常慢

php - MySQL LOAD_FILE 返回 NULL

java - java.time.LocalDate 参数在 hibernate 查询中作为 java.util.Date 处理

java - 在Grails中将listAgg与H2数据库一起使用

java - Spring Maven 和 Tomcat 的 Hibernate 问题

php - 如何订购数据两次。但是使第一个订单无效

java - GORM(grails)中的树结构

mysql - 如何在 HibernateSpatial API 中从多边形对象数据类型更改几何对象数据类型?