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。

4

1 回答 1

0

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

于 2013-07-11T08:16:03.763 回答