You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-user@db.apache.org by Ricardo Tercero Lozano <rt...@isoco.com> on 2003/03/24 17:37:29 UTC

Join Creation Exception

I got an exception when running this piece of code, a search with a criteria
that produces
a SQL with a JOIN statement (on colegiate.name):

-----
          ...
          if(collegiateName != null && collegiateName.trim().length() > 0){
              crit.addLike("upper(colegiate.name)", "%" +
collegiateName.toUpperCase() + "%");
          }

          Query q = QueryFactory.newQuery(OrderBean.class, crit);
          result = new Vector(broker.getCollectionByQuery(q));
          ....


>>>>>>>>>>>>>

java.lang.StringIndexOutOfBoundsException: String index out of range: 15
	at java.lang.String.substring(String.java:1517)
	at
org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.buildJoinTreeForColu
mn(Unknown Source)
	at
org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.buildJoinTree(Unknow
n Source)
	at
org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.splitCriteria(Unknow
n Source)
	at org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.<init>(Unknown
Source)
	at org.apache.ojb.broker.accesslayer.sql.SqlSelectStatement.<init>(Unknown
Source)
	at
org.apache.ojb.broker.accesslayer.sql.SqlGeneratorDefaultImpl.getPreparedSel
ectStatement(Unknown Source)
	at org.apache.ojb.broker.accesslayer.JdbcAccessImpl.executeQuery(Unknown
Source)
	at org.apache.ojb.broker.accesslayer.RsIterator.<init>(Unknown Source)
	at
org.apache.ojb.broker.singlevm.RsIteratorFactoryImpl.createRsIterator(Unknow
n Source)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getRsIteratorFromQuery(
Unknown Source)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getIteratorFromQuery(Un
known Source)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuery(Un
known Source)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuery(Un
known Source)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuery(Un
known Source)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuery(Un
known Source)
	at
org.apache.ojb.broker.singlevm.DelegatingPersistenceBroker.getCollectionByQu
ery(Unknown Source)
	at
com.isoco.icai.persistence.factory.OrderFactory.searchVisator(OrderFactory.j
ava:439)
	at
com.isoco.icai.viewcontrol.order.SearchOrderCommand.search(SearchOrderComman
d.java:329)
	at
com.isoco.icai.viewcontrol.order.SearchOrderCommand.execute(SearchOrderComma
nd.java:191)
	at com.isoco.bb.usecase.UseCaseManager.execute(UseCaseManager.java:138)
	at
com.isoco.icai.common.servlet.BaseDispatcherServlet.dispatch(BaseDispatcherS
ervlet.java:103)
	at
com.isoco.icai.common.servlet.BaseDispatcherServlet.doServletActions(BaseDis
patcherServlet.java:120)
	at
com.isoco.bb.iwab.servlet.BaseServlet.processRequest(BaseServlet.java:236)
	at com.isoco.bb.iwab.servlet.BaseServlet.doPost(BaseServlet.java:100)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:247)
	at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:193)
	at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
va:260)
	at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok
eNext(StandardPipeline.java:643)
	at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
va:191)
	at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok
eNext(StandardPipeline.java:643)
	at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at
org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415)
	at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180
)
	at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok
eNext(StandardPipeline.java:643)
	at
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.
java:170)
	at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok
eNext(StandardPipeline.java:641)
	at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172
)
	at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok
eNext(StandardPipeline.java:641)
	at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java
:174)
	at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok
eNext(StandardPipeline.java:643)
	at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
	at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:432)
	at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConne
ction(Http11Protocol.java:386)
	at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:534)
	at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.jav
a:530)
	at java.lang.Thread.run(Thread.java:479)

------

-----

Both, variable name and column name of the Bean/Table are named "name".

Same code without "upper()" works (but doesn't produce any result, as
upper() is necessary):

          ...
          if(collegiateName != null && collegiateName.trim().length() > 0){
              crit.addLike("colegiate.name", "%" +
collegiateName.toUpperCase() + "%");
          }



If I rename the Bean var "name" to "accountName":

          ...
          if(collegiateName != null && collegiateName.trim().length() > 0){
              crit.addLike("upper(colegiate.accountName)", "%" +
collegiateName.toUpperCase() + "%");
          }
          ...

the code works fine.


Could it be a OBJ bug?



--
------------------------------------------------------
Ricardo Tercero Lozano
iSOCO - Intelligent Software for the Networked Economy
e-mail: rtercero@isoco.com
Web: http://www.isoco.com
Francisca Delgado 11, 2nd floor
28108 Alcobendas
Madrid (Spain)
#T: +34 91 334 9750
    +34 91 334 9797 (Switchboard)
#F: +34 91 334 9799


Re: Join Creation Exception

Posted by Jakob Braeuchi <jb...@gmx.ch>.
hi ricardo,

this problem is solved in the latest from repository.

jakob

Ricardo Tercero Lozano wrote:

>I got an exception when running this piece of code, a search with a criteria
>that produces
>a SQL with a JOIN statement (on colegiate.name):
>
>-----
>          ...
>          if(collegiateName != null && collegiateName.trim().length() > 0){
>              crit.addLike("upper(colegiate.name)", "%" +
>collegiateName.toUpperCase() + "%");
>          }
>
>          Query q = QueryFactory.newQuery(OrderBean.class, crit);
>          result = new Vector(broker.getCollectionByQuery(q));
>          ....
>
>
>  
>
>
>java.lang.StringIndexOutOfBoundsException: String index out of range: 15
>	at java.lang.String.substring(String.java:1517)
>	at
>org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.buildJoinTreeForColu
>mn(Unknown Source)
>	at
>org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.buildJoinTree(Unknow
>n Source)
>	at
>org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.splitCriteria(Unknow
>n Source)
>	at org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.<init>(Unknown
>Source)
>	at org.apache.ojb.broker.accesslayer.sql.SqlSelectStatement.<init>(Unknown
>Source)
>	at
>org.apache.ojb.broker.accesslayer.sql.SqlGeneratorDefaultImpl.getPreparedSel
>ectStatement(Unknown Source)
>	at org.apache.ojb.broker.accesslayer.JdbcAccessImpl.executeQuery(Unknown
>Source)
>	at org.apache.ojb.broker.accesslayer.RsIterator.<init>(Unknown Source)
>	at
>org.apache.ojb.broker.singlevm.RsIteratorFactoryImpl.createRsIterator(Unknow
>n Source)
>	at
>org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getRsIteratorFromQuery(
>Unknown Source)
>	at
>org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getIteratorFromQuery(Un
>known Source)
>	at
>org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuery(Un
>known Source)
>	at
>org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuery(Un
>known Source)
>	at
>org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuery(Un
>known Source)
>	at
>org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuery(Un
>known Source)
>	at
>org.apache.ojb.broker.singlevm.DelegatingPersistenceBroker.getCollectionByQu
>ery(Unknown Source)
>	at
>com.isoco.icai.persistence.factory.OrderFactory.searchVisator(OrderFactory.j
>ava:439)
>	at
>com.isoco.icai.viewcontrol.order.SearchOrderCommand.search(SearchOrderComman
>d.java:329)
>	at
>com.isoco.icai.viewcontrol.order.SearchOrderCommand.execute(SearchOrderComma
>nd.java:191)
>	at com.isoco.bb.usecase.UseCaseManager.execute(UseCaseManager.java:138)
>	at
>com.isoco.icai.common.servlet.BaseDispatcherServlet.dispatch(BaseDispatcherS
>ervlet.java:103)
>	at
>com.isoco.icai.common.servlet.BaseDispatcherServlet.doServletActions(BaseDis
>patcherServlet.java:120)
>	at
>com.isoco.bb.iwab.servlet.BaseServlet.processRequest(BaseServlet.java:236)
>	at com.isoco.bb.iwab.servlet.BaseServlet.doPost(BaseServlet.java:100)
>	at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
>	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
>	at
>org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
>FilterChain.java:247)
>	at
>org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
>ain.java:193)
>	at
>org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
>va:260)
>	at
>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok
>eNext(StandardPipeline.java:643)
>	at
>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
>	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>	at
>org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
>va:191)
>	at
>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok
>eNext(StandardPipeline.java:643)
>	at
>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
>	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>	at
>org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415)
>	at
>org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180
>)
>	at
>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok
>eNext(StandardPipeline.java:643)
>	at
>org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.
>java:170)
>	at
>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok
>eNext(StandardPipeline.java:641)
>	at
>org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172
>)
>	at
>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok
>eNext(StandardPipeline.java:641)
>	at
>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
>	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>	at
>org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java
>:174)
>	at
>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok
>eNext(StandardPipeline.java:643)
>	at
>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
>	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>	at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
>	at
>org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:432)
>	at
>org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConne
>ction(Http11Protocol.java:386)
>	at
>org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:534)
>	at
>org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.jav
>a:530)
>	at java.lang.Thread.run(Thread.java:479)
>
>------
>
>-----
>
>Both, variable name and column name of the Bean/Table are named "name".
>
>Same code without "upper()" works (but doesn't produce any result, as
>upper() is necessary):
>
>          ...
>          if(collegiateName != null && collegiateName.trim().length() > 0){
>              crit.addLike("colegiate.name", "%" +
>collegiateName.toUpperCase() + "%");
>          }
>
>
>
>If I rename the Bean var "name" to "accountName":
>
>          ...
>          if(collegiateName != null && collegiateName.trim().length() > 0){
>              crit.addLike("upper(colegiate.accountName)", "%" +
>collegiateName.toUpperCase() + "%");
>          }
>          ...
>
>the code works fine.
>
>
>Could it be a OBJ bug?
>
>
>
>--
>------------------------------------------------------
>Ricardo Tercero Lozano
>iSOCO - Intelligent Software for the Networked Economy
>e-mail: rtercero@isoco.com
>Web: http://www.isoco.com
>Francisca Delgado 11, 2nd floor
>28108 Alcobendas
>Madrid (Spain)
>#T: +34 91 334 9750
>    +34 91 334 9797 (Switchboard)
>#F: +34 91 334 9799
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
>For additional commands, e-mail: ojb-user-help@db.apache.org
>
>
>  
>