2017-06-16 49 views
-1

我想執行這個查詢,它在phpMyAdmin工作,但不是在我的方法,它給我這個異常期待IDENT,發現「」 [在18「」

expecting IDENT, found ''[Under 18]'': line 1:53: expecting IDENT, found ''[Under 18]'' 

這是我的方法:

public List<Object[]> getTranche() { 
    List<Object[]> list; 

    Query req = em.createQuery("SELECT SUM(CASE WHEN age < 18 THEN 1 ELSE 0 END) AS '[Under 18]', SUM(CASE WHEN age BETWEEN 18 AND 24 THEN 1 ELSE 0 END) AS '[18-24]', SUM(CASE WHEN age BETWEEN 25 AND 34 THEN 1 ELSE 0 END) AS '[25-34]' FROM Contrat "); 

    return (List<Object[]>) req.getResultList(); 
} 

任何幫助,請

+0

我不知道MySQL是否在這方面是一樣的,但在SQL Server中,你不會用方括號括起單引號:'AS [18],SUM ...'會很好 – JonK

回答

2

你得到這個錯誤,因爲'[Under 18]'不是有效的別名

解決你的問題,你必須使用正確的別名,它應該是例如​​一個字符串,如果你想在名稱中使用空間,那麼你必須使用之間的兩個``而不是別名像這樣

AS `Under 18` 
+0

它是workk有一種方法來顯示與java的結腸的名稱 – user3529601

+0

我想將這under18恢復到variab – user3529601

+0

你是什麼意思@ user3529601我不明白你的意思 –