您的位置:首页 > 其它

hql语句之间少了空格引起的.IllegalArgumentException不合法异常

2017-04-04 10:55 148 查看
line 1:81: unexpected token: e
at org.hibernate.hql.internal.antlr.HqlBaseParser.queryRule(HqlBaseParser.java:784)
at org.hibernate.hql.internal.antlr.HqlBaseParser.selectStatement(HqlBaseParser.java:316)
at org.hibernate.hql.internal.antlr.HqlBaseParser.statement(HqlBaseParser.java:198)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:283)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:186)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:141)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:115)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:77)
at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:153)
at org.hibernate.internal.AbstractSharedSessionContract.getQueryPlan(AbstractSharedSessionContract.java:541)
at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:650)
at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:102)
at com.lrq.dao.daoImpl.EmployeeDaoImpl.query(EmployeeDaoImpl.java:32)
at com.lrq.test.TestEmployee.main(TestEmployee.java:26)

java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: e near line 1, column 81 [select e from com.lrq.entity.Employee e where
e.empId>-1and e.empName=:eNameand e.empPwd=:ePwd]
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:131)
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:155)
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:162)
at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:658)
at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:102)
at com.lrq.dao.daoImpl.EmployeeDaoImpl.query(EmployeeDaoImpl.java:32)
at com.lrq.test.TestEmployee.main(TestEmployee.java:26)

Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: e near line 1, column 81 [select e from com.lrq.entity.Employee e where e.empId>-1and e.empName=:eNameand e.empPwd=:ePwd]
at org.hibernate.hql.internal.ast.QuerySyntaxException.convert(QuerySyntaxException.java:74)
at org.hibernate.hql.internal.ast.ErrorCounter.throwQueryException(ErrorCounter.java:91)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:292)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:186)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:141)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:115)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:77)
at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:153)
at org.hibernate.internal.AbstractSharedSessionContract.getQueryPlan(AbstractSharedSessionContract.java:541)
at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:650)
... 3 more

Exception in thread "main" java.lang.NullPointerException
at com.lrq.test.TestEmployee.main(TestEmployee.java:27)

原因主要是hql语句之间缺少空格引起了不合法异常

String hql="select e from Employee e where e.empId>-1";
/*动态查询*/
int count=0;
if(employee.getEmpName()!=null&&!employee.getEmpName().equals("")){
hql+="and e.empName=:eName";
count+=1;
}
if(employee.getEmpPwd()!=null&&!employee.getEmpPwd().equals("")){
hql+="and e.empPwd=:ePwd";
count+=2;
}


只要在 and 前面添加空格即可
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐