[hibernate-issues] [Hibernate-JIRA] Closed: (HHH-2327) Syntax error generates NoSuchMethodException

Max Rydahl Andersen (JIRA) noreply at atlassian.com
Wed Dec 27 15:10:44 EST 2006


     [ http://opensource.atlassian.com/projects/hibernate/browse/HHH-2327?page=all ]
     
Max Rydahl Andersen closed HHH-2327:
------------------------------------

    Resolution: Rejected

use the antlr.jar that is distributed with hibernate.

> Syntax error generates NoSuchMethodException
> --------------------------------------------
>
>          Key: HHH-2327
>          URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-2327
>      Project: Hibernate3
>         Type: Bug

>   Components: core
>  Environment: Whatever version ships with Spring 2.0.
> Informix 7.34.1
>     Reporter: Thom Hehl

>
> Original Estimate: 1 day
>         Remaining: 1 day
>
> This source code:
>    public int countByPoolId(String poolNo) {
>       int result;
>       try {
>          result = (Integer)getSession().createQuery( //line 39
>                      "SELECT count(*) FROM PoolInfo p WHERE p.poolNumber='"+ poolNo
>                      + "' AND p.active='Y'"
>                      + "' AND p.status.statusCode BETWEEN '1' AND '4'").uniqueResult();
>       }
>       catch (HibernateException ex) {
>          throw convertHibernateAccessException(ex);
>       }
>       return result;
>    } 
> Generates this error:
> java.lang.NoSuchMethodError: org.hibernate.hql.antlr.HqlBaseParser.recover(Lantlr/RecognitionException;Lantlr/collections/impl/BitSet;)V
>    org.hibernate.hql.antlr.HqlBaseParser.concatenation(HqlBaseParser.java:655)
>    org.hibernate.hql.antlr.HqlBaseParser.relationalExpression(HqlBaseParser.java:2586)
>    org.hibernate.hql.antlr.HqlBaseParser.equalityExpression(HqlBaseParser.java:2542)
>    org.hibernate.hql.antlr.HqlBaseParser.negatedExpression(HqlBaseParser.java:2413)
>    org.hibernate.hql.antlr.HqlBaseParser.logicalAndExpression(HqlBaseParser.java:2341)
>    org.hibernate.hql.antlr.HqlBaseParser.logicalOrExpression(HqlBaseParser.java:2296)
>    org.hibernate.hql.antlr.HqlBaseParser.expression(HqlBaseParser.java:2082)
>    org.hibernate.hql.antlr.HqlBaseParser.logicalExpression(HqlBaseParser.java:1858)
>    org.hibernate.hql.antlr.HqlBaseParser.whereClause(HqlBaseParser.java:454)
>    org.hibernate.hql.antlr.HqlBaseParser.queryRule(HqlBaseParser.java:708)
>    org.hibernate.hql.antlr.HqlBaseParser.selectStatement(HqlBaseParser.java:296)
>    org.hibernate.hql.antlr.HqlBaseParser.statement(HqlBaseParser.java:159)
>    org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:248)
>    org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:157)
>    org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111)
>    org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:77)
>    org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:56)
>    org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72)
>    org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
>    org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
>    org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1623)
>    com.acs.gs.juror.dao.impl.PoolInfoDAOImpl.countByPoolId(PoolInfoDAOImpl.java:39)
>    com.acs.gs.ejuror.nvdist.bo.NvDistDeferStrategy.checkLimits(NvDistDeferStrategy.java:92)
>    com.acs.gs.ejuror.nvdist.bo.NvDistDeferStrategy.validateDeferral(NvDistDeferStrategy.java:59)
>    com.acs.gs.juror.bizstrategy.DeferStrategy.deferParticipant(DeferStrategy.java:127)
>    com.acs.gs.eJuror.web.actions.BaselineDeferProcessAction.execute(BaselineDeferProcessAction.java:165)
>    org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:106)
>    com.acs.gs.eJuror.web.struts.EJurorRequestProcessor.processActionPerform(EJurorRequestProcessor.java:110)
>    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
>    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
>    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
>    javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
>    javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
>    org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)
>    org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:263)
>    org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:398)
>    org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:318)
>    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241)
>    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
>    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
>    javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
>    javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
>    com.acs.gs.eJuror.web.servlet.SecurityFilter.doFilter(SecurityFilter.java:85) 
> It turns out the error was caused by the fact that at the beginning of the third line of the query I accidentally added a second '' after the Y at the end of the second line. This should generate some kind of syntax exception instead of this messy NoSuchMethodException.
> The mapping file looks like:
> <?xml version="1.0" encoding="UTF-8"?>
> <!DOCTYPE hibernate-mapping PUBLIC
> "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
> "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
> <hibernate-mapping>
>    <class name="com.acs.gs.juror.bo.PoolInfo" table="INFORMIX.POOL">
>       <composite-id class="com.acs.gs.juror.bo.PoolInfoKey" mapped="true">
>          <key-property name="poolNumber" column="POOL_NO"/>
>          <key-property name="sequenceNumber" column="POOL_SEQ"/>
>       </composite-id>
>       <property name="participantNumber" column="PART_NO"/>
>       <property name="poolNumber" column="POOL_NO" insert="false" update="false"/>
>       <property name="active" column="IS_ACTIVE"/>
>       <property name="firstName" column="fname"/>
>       <property name="lastName" column="lname"/>
>       <property name="city"/>
>       <property name="state"/>
>       <property name="zip"/>
>       <property name="dateDeferred" type="timestamp" column="DEF_DATE"/>
>       <property name="dateDisqualified" type="timestamp" column="DATE_DISQ"/>
>       <property name="dateExcused" type="timestamp" column="DATE_EXCUS"/>
>       <property name="dateOfBirth" type="timestamp" column="DOB"/>
>       <property name="dateNext" type="timestamp" column="NEXT_DATE"/>
>       <property name="dateReturn" type="timestamp" column="RET_DATE"/>
>       <property name="divisionCode" column="DIVISION_CODE"/>
>       <property name="responded"/>
>       <property name="homePhone" column="H_PHONE"/>
>       <property name="workPhone" column="W_PHONE"/>
>       <property name="disqualifiedCode" column="DISQ_CODE"/>
>       <property name="excuseCode" column="EXC_CODE"/>
>       <property name="courtLocation" column="LOC_CODE"/>
>       <property name="notes" column="NOTES"/>
>       <property name="numberAwol" column="NO_AWOL"/>
>       <property name="numberAttended" column="NO_ATTENDED"/>
>       <property name="numberFta" column="NO_FTA"/>
>       <property name="numberOfDeferralsPosted" column="NO_DEF_POS"/>
>       <property name="onCall" column="ON_CALL"/>
>       <property name="sequenceNumber" column="POOL_SEQ" insert="false" update="false"/>
>       <many-to-one name="status"
>             column="STATUS"
>              class="com.acs.gs.juror.bo.PoolStatus"
>             fetch="join"
>         />
>    </class>
> </hibernate-mapping> 
> Thanks.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira




More information about the hibernate-issues mailing list