我正在学习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; JPQL。 stack overflow中已经存在一个相关查询。