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。
答案 0 :(得分:0)
JPA 2.0支持案例表达。我提供了伪代码,可以相应地进行修改。
您可以使用CASE
尝试以下JPQL查询。
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条件表达式 scalar_expression ELSE scalar_expression END
否则,可以尝试使用Criteria API来构建查询。
when(表达条件,R结果):添加a when / then子句到case表达式。
criteriaBuilder.selectCase().when(criteriaBuilder.equal(person.get("id"), id1), name_1);