我正在学习JPA,并与JPQL进行了一些接触。我在CASE表达式中遇到麻烦。
例如,此查询

Query caseQuery = em
            .createQuery("SELECT t , CASE WHEN t.salary = 20000 THEN '20k' WHEN t.salary = 40000 THEN '40k' ELSE 'No salary' END FROM Teacher t");


并使用执行

List<Teacher> teachers = (List<Teacher>) caseQuery.getResultList();


但是每当我尝试打印结果时,我都会得到ClassCastException无法将Object转换为Teacher

我尝试将TypedQuery用于Teacher,但是没有用。您能否请专家们对在JPQL中执行此CASE语句有所帮助?

最佳答案

原因是由于查询中有多个选择表达式,而不是CASE表达式,我相信有了多个选择表达式,结果将是Object []而不是转换为Entity。一些参考JPA Tutorial; JPQLstack overflow中已经存在一个相关查询。

10-08 19:50