我有以下查询,
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;]
有关如何解决此问题的任何建议吗?
答案 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();