我正在學習JPA,並且使用JPQL做了一些操作。我在CASE表達式中遇到問題。 例如,下面的查詢,在jpql中執行大小寫表達式
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
語句?
我認爲這是在JPA 2.0中引入的情況 - 請參閱http://stackoverflow.com/questions/427447/is-there-such-thing-case-expression-in-jpql – Leo
@Leo我已經看到這個問題解釋瞭如何編寫CASE表達式,甚至書籍和官方文檔都解釋了這一點。我在執行CASE查詢和獲取結果時遇到了麻煩。 –
我明白了。在你的情況下,你檢索的不僅僅是一個教師對象,所以我認爲你必須在查詢中返回除教師對象之外的東西 – Leo