JPA 2.0の新機能 CASE文を試す
JPA2.0にはCASE文が使えるようになった。SQLを知っている人ならばみんな触ったことがあるはず。
import java.util.List; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; public class Main2 { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("JPA2TestPU"); EntityManager em = emf.createEntityManager(); String jpql = "select case " + "when e.salary > 210000 then concat(e.name , ' この金持ちめ!') " + "when e.salary < 180000 then concat(e.name , ' がんがれ!') " + "else concat(e.name , ' 普通だなっす') " + "end " + "from Employee e "; List<String> result = em.createQuery(jpql ).getResultList(); for(String e : result){ System.out.println(e); } em.close(); emf.close(); } }
構文はSQL標準とまったく同じ模様。
ちなみにconcatは文字列の連結ね。