QueryDsl:使用两个列表参数更新 table
QueryDsl: Updating table with two List parameters
我有一个更新所有员工的方法,在服务层为每个员工调用该方法。
public void updateEmployeeData(Long id, String account) {
queryFactory.update(employee)
.set(employee.employeeAccount, account)
.where(employee.employeeId.eq(id))
.execute();
}
我必须优化代码并使用 Lists 参数调用一次。
出于这个原因,我将 id 参数转换为列表。
public void updateEmployeeData(List<Long> ids, String account) {
queryFactory.update(employee)
.set(employee.employeeAccount, account)
.where(employee.employeeId.in(ids))
.execute();
}
但是如何遍历每个员工帐户?我无法将 IN 子句添加到查询的 set
部分。
除了增强 For 循环和迭代每个员工之外,还有其他解决方案吗?
在 SQL 中,您可以使用临时 table 或值子句,但不幸的是,这些在 JPQL 中不可用。在 JPA 修改查询中不可能更新具有不同值的多行。连续地,Querydsl 不支持这个,因为它只是一个围绕 JPQL 的查询构建器。
我有一个更新所有员工的方法,在服务层为每个员工调用该方法。
public void updateEmployeeData(Long id, String account) {
queryFactory.update(employee)
.set(employee.employeeAccount, account)
.where(employee.employeeId.eq(id))
.execute();
}
我必须优化代码并使用 Lists 参数调用一次。 出于这个原因,我将 id 参数转换为列表。
public void updateEmployeeData(List<Long> ids, String account) {
queryFactory.update(employee)
.set(employee.employeeAccount, account)
.where(employee.employeeId.in(ids))
.execute();
}
但是如何遍历每个员工帐户?我无法将 IN 子句添加到查询的 set
部分。
除了增强 For 循环和迭代每个员工之外,还有其他解决方案吗?
在 SQL 中,您可以使用临时 table 或值子句,但不幸的是,这些在 JPQL 中不可用。在 JPA 修改查询中不可能更新具有不同值的多行。连续地,Querydsl 不支持这个,因为它只是一个围绕 JPQL 的查询构建器。