Java Hibernate在查询中放置*时出错
我有一个疑问Java Hibernate在查询中放置*时出错,java,mysql,sql,hibernate,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终端上得到了上述查询的结果。 但当我尝试在Hibernatequery中执行相同的操作时,会出现以下情况: Query query = sessionFactory.getCurrentSession()
SELECT description, SUM( CASE WHEN entryType = 1 THEN amount ELSE amount * -1 END ) totals
FROM AccountDetails
GROUP BY account_id;
我在MySQL
终端上得到了上述查询的结果。
但当我尝试在Hibernate
query中执行相同的操作时,会出现以下情况:
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列附近找到“*”[按帐户id从帐户详细信息组中选择描述、总和(entryType=1时为事例,然后是amount ELSE amount*-1 end)总计]
有关如何解决此问题的任何建议?请使用
sql查询
,而不是hql查询
。同时删除代码>从查询的末尾开始
应该是:
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();
使用sql查询
,而不是hql查询
。同时删除代码>从查询的末尾开始
应该是:
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();
使用sql查询
,而不是hql查询
。同时删除代码>从查询的末尾开始
应该是:
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();
使用sql查询
,而不是hql查询
。同时删除代码>从查询的末尾开始
应该是:
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();
实际上你不需要乘法,只要用-amount
代替amount*-1实际上你不需要乘法,只要用-amount
代替amount*-1实际上你不需要乘法,只需使用-amount
而不是amount*-1
实际上您不需要乘法,只需使用-amount
而不是amount*-1