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]