【问题标题】:Error with Hibernate HQL - unexpected token:Hibernate HQL 出错 - 意外令牌:
【发布时间】:2014-11-13 14:15:40
【问题描述】:
***import org.hibernate.Query;***

String hql = "FROM :className WHERE userCreate like ':userName'";
Query query = session.createQuery(hql);
query.setParameter("className", className);
query.setParameter("userName", userName);
List<Node> result = query.list();

还有一个错误

org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: : near line 1, column 6 [FROM :className WHERE userCreate like ':userName']
at org.hibernate.hql.internal.ast.QuerySyntaxException.convert(QuerySyntaxException.java:91)
at org.hibernate.hql.internal.ast.ErrorCounter.throwQueryException(ErrorCounter.java:109)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:304)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:203)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:158)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:126)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:88)
at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:167)
at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:301)
at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:236)
at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1800)
at com.SDC.DAO.DAOFileAndFolderService.findUserCreteFileOrFolder(DAOFileAndFolderService.java:36)
at com.SDC.View.Main.main(Main.java:57)

线程“main”中的异常 java.lang.NullPointerException 在 com.SDC.View.Main.main(Main.java:58)

【问题讨论】:

    标签: java hibernate annotations hql


    【解决方案1】:

    您不能将命名参数用于 Hibernate 查询。您可以通过手动将表的名称附加到您的 hql 字符串中来解决此问题。您的代码将如下所示:

    String hql = "FROM " + className + " WHERE userCreate like ':userName'";
    Query query = session.createQuery(hql);
    query.setParameter("userName", userName);
    List<Node> result = query.list();
    

    【讨论】:

    • 是的。谢谢你的回答
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-21
    • 2017-05-02
    • 1970-01-01
    • 2016-05-02
    • 2016-10-05
    • 2014-10-12
    • 1970-01-01
    相关资源
    最近更新 更多