【问题标题】:what is correct format for list param in hqlhql中列表参数的正确格式是什么
【发布时间】:2015-07-15 08:37:10
【问题描述】:
RaceRegistration.executeQuery("select RaceRegistration.compositeEvent.id FROM RaceRegistration where RaceRegistration.id in :registrationIds group by RaceRegistration.compositeEvent.id",
                     [registrationIds: [1,2]])

在上述查询中,我的疑问在于最后一部分 [registrationIds: [1,2]]。在这里,我假设列表的格式是错误的。感谢您在更正格式方面的任何帮助。谢谢!

我得到以下异常

Exception thrown

org.springframework.orm.hibernate3.HibernateQueryException: Unable to resolve path [RaceRegistration.compositeEvent], unexpected token [RaceRegistration] [select RaceRegistration.compositeEvent.id FROM com.runnercard.registration.RaceRegistration where RaceRegistration.id in :registrationIds group by RaceRegistration.compositeEvent.id]; nested exception is org.hibernate.QueryException: Unable to resolve path [RaceRegistration.compositeEvent], unexpected token [RaceRegistration] [select RaceRegistration.compositeEvent.id FROM com.runnercard.registration.RaceRegistration where RaceRegistration.id in :registrationIds group by RaceRegistration.compositeEvent.id]

    at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:656)

    at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)

    at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:411)

    at org.springframework.orm.hibernate3.HibernateTemplate.executeFind(HibernateTemplate.java:343)

    at com.runnercard.registration.RaceRegistration.executeQuery(RaceRegistration.groovy)

    at com.runnercard.registration.RaceRegistration$executeQuery.call(Unknown Source)

    at ConsoleScript5.run(ConsoleScript5:4)

Caused by: org.hibernate.QueryException: Unable to resolve path [RaceRegistration.compositeEvent], unexpected token [RaceRegistration] [select RaceRegistration.compositeEvent.id FROM com.runnercard.registration.RaceRegistration where RaceRegistration.id in :registrationIds group by RaceRegistration.compositeEvent.id]

    at org.hibernate.hql.ast.tree.IdentNode.resolveAsNakedComponentPropertyRefLHS(IdentNode.java:219)

    at org.hibernate.hql.ast.tree.IdentNode.resolve(IdentNode.java:108)

    at org.hibernate.hql.ast.tree.DotNode.resolveFirstChild(DotNode.java:175)

    at org.hibernate.hql.ast.HqlSqlWalker.lookupProperty(HqlSqlWalker.java:576)

    at org.hibernate.hql.antlr.HqlSqlBaseWalker.propertyRef(HqlSqlBaseWalker.java:1181)

    at org.hibernate.hql.antlr.HqlSqlBaseWalker.propertyRefLhs(HqlSqlBaseWalker.java:5495)       

【问题讨论】:

    标签: grails hql


    【解决方案1】:

    异常说明了其他内容。 RaceRegistration 类的映射似乎有问题。 compositeEvent 字段好像没有映射或者映射不正确。

    所以考虑到抛出的异常,实际上你的问题是错误的。

    【讨论】:

    • 谢谢!这似乎有效 RaceRegistration.executeQuery("select E.compositeEvent.id FROM RaceRegistration E where E.id in :registrationIds group by E.compositeEvent.id", [registrationIds: [1L,2L, 3L]] )
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-04
    • 1970-01-01
    • 1970-01-01
    • 2011-04-04
    • 2010-12-27
    • 1970-01-01
    相关资源
    最近更新 更多