我有以下几点建议:
@Query("SELECT su.id, su.nameCn, count(b.id), avg(s.rate), count(concat(b.id, '@', s.user.id)) "
+ "FROM S su, B b, S s where b.st.id = su.id and s.bd.id = b.id and su.mt.id = ?1 group by su.id")当我添加concat(b.id, '@', s.user.id)时,它向我显示:
org.hibernate.hql.internal.ast.QuerySyntaxException:期待接近,找到'(‘在第1行,在org.hibernate.hql.internal.ast.QuerySyntaxException.convert(QuerySyntaxException.java:74) ~hibernate-core-5.1.0.Final.jar:5.1.0.在org.hibernate.hql.internal.ast.ErrorCounter.throwQueryException(ErrorCounter.java:91) ~hibernate-core-5.1.0.Final.jar:5.1.0.在org.hibernate.hql.internal.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:288) ~hibernate-core-5.1.0.Final.jar:5.1.0.Final在org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:187) ~hibernate-core-5.1.0.Final.jar:5.1.0.Final.jar:5.1.0.Final.jar在org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:142) ~hibernate-核心-5.1.0.Final.jar:5.1.0在org.hibernate.engine.query.spi.HQLQueryPlanorg.hibernate.engine.query.spi.HQLQueryPlan.(HQLQueryPlan.java:76) ~hibernate结束-5.1.0.Final.jar:5.1.0.final.jar:5.1.0.Final.jar:5.1.0.Final.jar:5.1.0.final.jar:5.在org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:302) ~hibernate-core-5.1.0.final.jar:5.1.0.final.jar:5.1.0。在org.hibernate.jpa.spi.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:291) ~hibernate-entitymanager-5.1.0.Final.jar:5.1.0.Final期末考试
发布于 2016-04-07 13:00:37
期待接近,找到了
(
这里的“结束”一词指的是结束括号)。
查询解析器似乎不支持调用count(...)中的另一个函数。
换句话说,语法错误出现在这里:
SELECT su.id, su.nameCn, count(b.id), avg(s.rate), count(concat(b.id, '@', s.user.id))
^也许你是想做某种连接,然后在那里数行呢?
发布于 2016-04-07 14:06:39
问题是同时使用计数函数和级联函数。
如果您像下面这样在没有count()的情况下编写查询,那么应该可以工作。这只是为了测试究竟是谁造成了问题。
尝试使用不同的方式编写查询,分别使用计数和连接。
...concat(b.id, '@', s.user.id)....https://stackoverflow.com/questions/36475872
复制相似问题