Java JPQL-使用多个where条件更新

Java JPQL-使用多个where条件更新,java,hibernate,hql,where-clause,jpql,Java,Hibernate,Hql,Where Clause,Jpql,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 JPA2.0支持大小写表达式。我提供了伪代码,可以

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

JPA2.0支持大小写表达式。我提供了伪代码,可以做相应的修改

  • 您可以使用
    CASE
    尝试以下JPQL查询

    updateperson p set p.name=CASE WHEN(p.id=:id1)然后:name_1 WHEN(p.id=:id2)然后:name_2 WHEN(p.id=:id3)然后:name_3 END

    常规\u case\u表达式::=case WHEN条件\u表达式然后 标量表达式ELSE标量表达式结束

  • 否则,可以尝试使用CriteriaAPI构建查询

    when(表达式条件,R结果):添加 将when/then子句添加到case表达式中

    criteriaBuilder.selectCase().when(criteriaBuilder.equal(person.get(“id”),id1),name_1)


不,我不认为,3次SQL更新需要3次JPA更新。@KrantMin服务器只会为CASE expression检查每一行一次,这比为每个条件执行单独的查询要好得多。