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: [EMAIL PROTECTED]
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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to