JPQL 是否支持以下更新?
Update Person p set p.name = :name_1 where p.id = :id_1,
p.name = :name_2 where p.id = :id_2,
p.name = :name_3 where p.id = :id_3
如果没有,是否有任何替代方案?我自己试过了。但createQuery
返回 null。
JPQL 是否支持以下更新?
Update Person p set p.name = :name_1 where p.id = :id_1,
p.name = :name_2 where p.id = :id_2,
p.name = :name_3 where p.id = :id_3
如果没有,是否有任何替代方案?我自己试过了。但createQuery
返回 null。
JPA 2.0 支持案例表达式。我提供了伪代码,可以做相应的修改。
您可以尝试使用以下 JPQL 查询CASE
。
Update Person p set p.name = CASE WHEN (p.id = :id1) THEN :name_1 WHEN (p.id = :id2) THEN :name_2 WHEN (p.id = :id3) THEN :name_3 END
general_case_expression::= CASE WHEN conditional_expression THEN scalar_expression ELSE scalar_expression END
否则,可以尝试 Criteria API 来构建查询。
when(Expression condition, R result) :在 case 表达式中添加 when/then 子句。
criteriaBuilder.selectCase().when(criteriaBuilder.equal(person.get("id"), id1), name_1);