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 的查询构建器。