JPQL - refresh with Multiple where conditions

Does JPQL support the next update?

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

      

If not, are there any alternatives? I tried this myself. But it createQuery

returns null.

0


source to share


1 answer


An instance of the case is supported in JPA 2.0. I have provided pseudocode, I can make the appropriate changes.



  • You can try to execute your JPQL query with 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

  • Otherwise, try the criteria API to create a request.

    when (expression condition, R result): add when / then expression points to case expression.

    criteriaBuilder.selectCase().when(criteriaBuilder.equal(person.get("id"), id1), name_1);

0


source







All Articles