当我将*放在查询中的任何位置时,Hibernate在查询中收到错误

时间:2015-09-22 10:15:24

标签: java mysql sql hibernate

我有以下查询,

SELECT description, SUM( CASE WHEN entryType =  1 THEN amount ELSE amount * -1 END ) totals
FROM AccountDetails
GROUP BY account_id;

我在MySQL终端获得了上述查询的结果。 但是,当我尝试在Hibernate查询中执行相同的操作时,使用以下内容:

Query query = sessionFactory.getCurrentSession().createQuery("SELECT description, SUM( CASE WHEN entryType =  1 THEN amount ELSE amount * -1 END ) totals FROM AcountDetails GROUP BY account_id;");
return query.list();

我收到了以下错误,

  

org.springframework.web.util.NestedServletException:请求处理失败;嵌套异常是
org.hibernate.hql.internal.ast.QuerySyntaxException:期待“结束”,在第1行第75列附近找到'*' [SELECT description,SUM(CASE WHEN entryType) = 1那么金额ELSE金额* -1 END)总计来自AcountDetails GROUP BY account_id;]

有关如何解决此问题的任何建议吗?

2 个答案:

答案 0 :(得分:2)

实际上您不需要繁殖,只需使用-amount代替amount * -1

答案 1 :(得分:1)

使用sql query代替hql query。同时从查询末尾删除;

应该是:

Query query = sessionFactory.getCurrentSession().createSQLQuery("SELECT description, SUM( CASE WHEN entryType =  1 THEN amount ELSE amount * -1 END ) totals FROM AcountDetails GROUP BY account_id");
return query.list();