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
>
>
>
>