gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 20:50:55 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com