org.hibernate.hql.internal.ast.ErrorCounter:意外的标记:(
问题描述:
我收到以下错误,当我尝试执行下面的查询 -org.hibernate.hql.internal.ast.ErrorCounter:意外的标记:(
错误
ERROR [2014-10-27 11:17:24,264] org.hibernate.hql.internal.ast.ErrorCounter: line 1:33: unexpected token: (
ERROR [2014-10-27 11:17:24,304] org.hibernate.hql.internal.ast.ErrorCounter: line 1:33: unexpected token: (
! antlr.NoViableAltException: unexpected token: (
ERROR [2014-10-27 11:17:24,306] org.hibernate.hql.internal.ast.ErrorCounter: line 1:68: unexpected token: MAX
ERROR [2014-10-27 11:17:24,312] org.hibernate.hql.internal.ast.ErrorCounter: line 1:68: unexpected token: MAX
! antlr.NoViableAltException: unexpected token: MAX
查询
String sSubQuery = "SELECT om.path, om.originalSize, MAX(om.lastModified) "+
"FROM "+
"ObjectMetadata om "+
"WHERE om.informationStoreId = '"+informationStoreDefinitionID+"' "+
"GROUP BY om.path, om.originalSize";
String sQuery = "SELECT SUM(o.originalSize) "+
"FROM "+
"("+
" "+sSubQuery+
") "+
"o";
Query q = getEm().createQuery(sQuery);
请帮助。
答
尝试
String sSubQuery = "SELECT SUM(om.originalSize), MAX(om.lastModified) "+
"FROM "+ "ObjectMetadata om "+
"WHERE om.informationStoreId = :informationStoreDefinitionID "+
"GROUP BY om.path, om.originalSize";
Query q = getEm().createQuery(sQuery);
q.addParameter("informationStoreDefinitionID",22);
+0
@StuartLC我需要对'Max query(lastModified)''sub query'的结果应用'sum',所以'Sum()'需要适用于所有只有'max''lastModified'的日期的记录 – 2014-10-27 14:48:33
+0
http://*.com/questions/26603496/org-hibernate-hql-errors-in-hql-subquries – 2014-10-28 09:04:04
由于您没有在外部查询中使用'MAX(om.lastModified)',因此您可以忽略它。实际上,因为你只是用一个过滤器来总结'om.originalSize',你根本不需要派生表? – StuartLC 2014-10-27 12:30:36
表包含文件的元数据,它可能有多个条目对应于文件名,但它在表中具有不同的最后修改日期。我需要的是 - 最近更新或修改的所有文件的总大小。 – 2014-10-27 13:12:39
当我在postgres中执行以下查询时,它成功执行 - “select sum(o.original_size)from(SELECT om.path,om.original_size, MAX(om.last_modified)FROM object_metadata om WHERE om.information_store_id = ' ff0dcb68-8aab-40f0-b8d8-fcfb82396f5d'GROUP BY om.path,om.original_size)o“;' – 2014-10-27 13:22:24