意外令牌:(在HQL中

Baddam ravi

在查询下方由于意外的令牌而出现错误:(,但此查询在SQL中工作正常

"SELECT slh.assetId,slh.mapHierarchy "
+ "FROM AssetHistory slh "
+ "INNER JOIN "
+ "(SELECT assetId, MAX(lastUpdated) AS MaxDateTime "
+ "FROM AssetHistory "
+ "GROUP BY assetId) slh2 "
+ "ON slh.assetId = slh2.assetId "
+ "AND slh.lastUpdated =slh2.MaxDateTime ";

我希望有人能帮助我。

这是错误日志:

2016年1月25日下午4:04:32 org.hibernate.hql.internal.ast.ErrorCounter reportError错误:行1:89:意外令牌:(2016年1月25日4:04:32 PM org.hibernate.hql.internal .ast.ErrorCounter reportError错误:第1行:89:意外令牌:(第1:89行:意外令牌:(在org.hibernate.hql.internal.antlr.HqlBaseParser.fromJoin(HqlBaseParser.java:1661)在org.hibernate.hql.internal.antlr.HqlBaseParser.fromClause(HqlBaseParser.java:1380)在org.hibernate.hqin org.hibernate.hql.internal.antlr.HqlBaseParser.queryRule(HqlBaseParser.java:731)的org.hibernate.hql.internal.antlr.HqlBaseParser.selectStatement的.antlr.HqlBaseParser.selectFrom(HqlBaseParser.java:1086) .java:323),位于org.hibernate.hql.internal.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:295),位于org.hibernate.hql.internal.antlr.HqlBaseParser.statement(HqlBaseParser.java:186)。 org.hibernate.engine.query.spi上的hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:203)在org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:158)在org.hibernate.engine.query.spi。 HQLQueryPlan。(HQLQueryPlan.java:126)在org.hibernate.engine.query.spi.HQLQueryPlan。(HQLQueryPlan.java:88)在org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:167)

错误:行1:106:意外令牌:最大值行1:106:意外令牌:最大值在org.hibernate.hqlternal.hql.internal.antlr.HqlBaseParser.fromRange(HqlBaseParser.java:1544)处,在org.hibernate.hql.internal.antlr.HqlBaseParser.fromClause(HqlBaseParser.java:1388)在org.hibernate.hql.internal.antlr.HqlBaseParser.queryRule(HqlBaseParser.java:731)的org.hibernate.hql.internal.antlr.HqlBaseParser.selectStatement的.antlr.HqlBaseParser.selectFrom(HqlBaseParser.java:1086) .java:323),位于org.hibernate.hql.internal.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:295),位于org.hibernate.hql.internal.antlr.HqlBaseParser.statement(HqlBaseParser.java:186)。 org.hibernate.engine.query.spi上的hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:203)在org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:158)在org.hibernate.engine.query.spi。 HQLQueryPlan。(HQLQueryPlan.java:126)在org.hibernate.engine.query.spi.HQLQueryPlan。(HQLQueryPlan.java:88)在org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:167)在org.hibernate.internal。 org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:236)的org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1800)的AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:301)

eg04lt3r

我认为您应该将子查询从join移到where子句。

"SELECT slh.assetId,slh.mapHierarchy "
+ "FROM AssetHistory slh "
+" WHERE (slh.assetId, slh.lastUpdated)"
+ " IN 
+ "(SELECT assetId, MAX(lastUpdated) AS MaxDateTime "
+ "FROM AssetHistory "
+ "GROUP BY assetId);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章