2017-06-16 20 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我不明白你的意思 –