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语句之间缺少空格引起了不合法异常
只要在 and 前面添加空格即可
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 前面添加空格即可
相关文章推荐
- 【问题汇总】图片资源引起IllegalArgumentException异常的问题
- java.lang.IllegalArgumentException 不合法的参数异常
- Tomcat的异常 java.lang.IllegalArgumentException: Document base 发现问题解决问题
- 异常 java.lang.IllegalArgumentException: Unable to access unsupported property javax.xml.stream.suppor
- java.lang.IllegalArgumentException这个异常是字面 非法参数 通常情况为找不到文件等
- 异常:java.lang.IllegalArgumentException: Removing a detached instance
- Tomcat60 换 Tomcat7.0 项目启动异常IllegalArgumentException: taglib definition not consistent with specific
- JSONObject跳出java.lang.IllegalArgumentException异常
- java.lang.IllegalArgumentException: attempt to create saveOrUpdate event with null entity异常的易被忽略的原因
- Tomcat的异常 之 java.lang.IllegalArgumentException: Document base *** does not exist or is not a readable
- java.lang.IllegalArgumentException: The observer is null.异常解决方案
- Android异常总结---E/AndroidRuntime(23439): Caused by: java.lang.IllegalArgumentException: column '_id' d
- JAXB 的xjc任务时出现java.lang.IllegalArgumentException异常
- IllegalArgumentException: Unknown margin constant: 4异常的解决方案
- (转)Tomcat的异常 之 java.lang.IllegalArgumentException: Document base *** does not exist or is not a readable
- Tomcat的异常 之 java.lang.IllegalArgumentException: Document base *** does not exist or is not a readabl
- Tomcat的异常 之 java.lang.IllegalArgumentException:Document base *** does not exist or is not a readable
- Android 异常处理:java.lang.IllegalArgumentException(...contains a path separator)
- java.lang.IllegalArgumentException: timeout arguments out of range异常
- java.lang.IllegalArgumentException: Malformed \uxxxx encoding异常解析