select count(*)  from Employee p where 1=1 and p.name like :name and p.employeeContact.address like :employeeContact.address这个是查询出来的sql语句。2009-04-16 10:31:22,656 ERROR [org.hibernate.hql.PARSER] - <AST>:1:116: unexpected AST node: :
Exception in thread "main" java.lang.NullPointerException
at org.hibernate.hql.ast.HqlSqlWalker.lookupProperty(HqlSqlWalker.java:443)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.addrExpr(HqlSqlBaseWalker.java:4326)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.expr(HqlSqlBaseWalker.java:1212)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.comparisonExpr(HqlSqlBaseWalker.java:3672)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1762)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1690)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.whereClause(HqlSqlBaseWalker.java:776)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:577)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:281)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:229)
at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:228)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:160)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:77)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:56)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72)
at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1627)
at com.hrm.dao.HDao.createQuery(HDao.java:215)
at com.hrm.util.Tools.search(Tools.java:66)
at com.hrm.service.impl.EmployeeBaseServiceImpl.listEmployee(EmployeeBaseServiceImpl.java:131)
at com.hrm.test.TestEmployee.t13(TestEmployee.java:195)
at com.hrm.test.TestEmployee.main(TestEmployee.java:31)报出的错误。
我调试过,错误出在session.createQuery里面,但是session是有值的,而且sqlCount也是有值的,不是我代码的错误,而是底层的问题吧。我的配置是一对一的。

解决方案 »

  1.   

    select count(*)  from Employee p where 1=1 and p.name like :name and p.employeeContact.address like :employeeContact.address
    你使用的 hql语句
    hql操纵的都是类和对象
    把语句中的 count(*) 改为 count(p)就可以了
      

  2.   

    呵呵,lz把hibernate生成的sql放到数据库端执行一下,如果有错说明你的hql也是有问题的。
      

  3.   


    select count(p)  from Employee p where 1=1 and p.name like :name and p.employeeContact.address like :employeeContact.address
    2009-04-16 12:02:29,875 ERROR [org.hibernate.hql.PARSER] - <AST>:1:116: unexpected AST node: :
    Exception in thread "main" java.lang.NullPointerException
    at org.hibernate.hql.ast.HqlSqlWalker.lookupProperty(HqlSqlWalker.java:443)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.addrExpr(HqlSqlBaseWalker.java:4326)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.expr(HqlSqlBaseWalker.java:1212)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.comparisonExpr(HqlSqlBaseWalker.java:3672)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1762)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1690)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.whereClause(HqlSqlBaseWalker.java:776)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:577)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:281)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:229)
    at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:228)
    at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:160)
    at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111)
    at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:77)
    at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:56)
    at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72)
    at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
    at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
    at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1627)
    at com.hrm.dao.HDao.createQuery(HDao.java:216)
    at com.hrm.util.Tools.search(Tools.java:66)
    at com.hrm.service.impl.EmployeeBaseServiceImpl.listEmployee(EmployeeBaseServiceImpl.java:131)
    at com.hrm.test.TestEmployee.t13(TestEmployee.java:195)
    at com.hrm.test.TestEmployee.main(TestEmployee.java:31)还是不行
      

  4.   

    同意1楼的说法,LZ先把你的sql放到数据库取执行下,要是能查询,那证明你的sql是没问题的,
      

  5.   

      like  :employeeContact.address 是什么意思?
       你设置参数时是怎么设置的?
      

  6.   

    先看看你的sql语句能执行不能,确保sql语句是对的在改写hql
    还有一点就是你的语句是对的,看看你的main()调用的是否正确.
      

  7.   

    解决了。 like  :employeeContact.address 的问题,原来like后面是不能加"."的。
    谢谢大家了。