JPQL - 使用多个条件更新

时间:2013-07-10 22:12:44

标签: 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。

1 个答案:

答案 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);