You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-java@ibatis.apache.org by David Hodge <dy...@gmail.com> on 2006/12/08 17:02:41 UTC

iBatis 2.2.0 and Spring Framework 2.0 Bug

This happens when executing a query for list that has a subselect.  We are
using the SqlMapClientDaoSupport and setting the data source in each DAO
instead of in the SQLMapClient.  However, by setting the data source in the
the SQLMapClient, then it works fine.


We investigated but we are not sure why this happens.

Here is the stack trace:

java.lang.NullPointerException
    at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.endTransaction(
SqlMapExecutorDelegate.java:780)
    at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.endTransaction(
SqlMapSessionImpl.java:170)
    at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.endTransaction(
SqlMapClientImpl.java:149)
    at
com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.autoEndTransaction(
SqlMapExecutorDelegate.java:880)
    at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(
SqlMapExecutorDelegate.java:621)
    at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(
SqlMapExecutorDelegate.java:588)
    at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(
SqlMapSessionImpl.java:118)
    at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForList(
SqlMapClientImpl.java:96)
    at com.ibatis.sqlmap.engine.mapping.result.loader.ResultLoader.getResult
(ResultLoader.java:72)
    at
com.ibatis.sqlmap.engine.mapping.result.loader.ResultLoader.loadResult(
ResultLoader.java:59)
    at
com.ibatis.sqlmap.engine.mapping.result.BasicResultMap.getNestedSelectMappingValue
(BasicResultMap.java:504)
    at com.ibatis.sqlmap.engine.mapping.result.BasicResultMap.getResults(
BasicResultMap.java:340)
    at com.ibatis.sqlmap.engine.execution.SqlExecutor.handleResults(
SqlExecutor.java:375)
    at com.ibatis.sqlmap.engine.execution.SqlExecutor.handleMultipleResults(
SqlExecutor.java:295)
    at com.ibatis.sqlmap.engine.execution.SqlExecutor.executeQuery(
SqlExecutor.java:186)
    at
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.sqlExecuteQuery(
GeneralStatement.java:205)
    at
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryWithCallback
(GeneralStatement.java:173)
    at
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryForList
(GeneralStatement.java:123)
    at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(
SqlMapExecutorDelegate.java:614)
    at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(
SqlMapExecutorDelegate.java:588)
    at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(
SqlMapSessionImpl.java:118)
    at
org.springframework.orm.ibatis.SqlMapClientTemplate$3.doInSqlMapClient(
SqlMapClientTemplate.java:263)
    at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(
SqlMapClientTemplate.java:188)
    at
org.springframework.orm.ibatis.SqlMapClientTemplate.executeWithListResult(
SqlMapClientTemplate.java:214)
    at org.springframework.orm.ibatis.SqlMapClientTemplate.queryForList(
SqlMapClientTemplate.java:261)

-------

Thanks,

David Y. Hodge

Re: iBatis 2.2.0 and Spring Framework 2.0 Bug

Posted by David Hodge <dy...@gmail.com>.
Thanks for your help. I guess I missed that post.

David Y. Hodge

On 12/8/06, Jeff Butler <je...@gmail.com> wrote:
>
> We've seen this before:
>
> http://www.mail-archive.com/user-java@ibatis.apache.org/msg06009.html
>
> The bottom line is that you should inject the datasource into the
> SQLMapClient, NOT each DAO - this is what is shown in the Spring
> documentation, and is the supported method.
>
> Jeff Butler
>
>
>
> On 12/8/06, David Hodge <dy...@gmail.com> wrote:
> >
> > This happens when executing a query for list that has a subselect.  We
> > are using the SqlMapClientDaoSupport and setting the data source in each DAO
> > instead of in the SQLMapClient.  However, by setting the data source in the
> > the SQLMapClient, then it works fine.
> >
> >
> > We investigated but we are not sure why this happens.
> >
> > Here is the stack trace:
> >
> > java.lang.NullPointerException
> >     at
> > com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.endTransaction(
> > SqlMapExecutorDelegate.java :780)
> >     at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.endTransaction(
> > SqlMapSessionImpl.java:170)
> >     at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.endTransaction(
> > SqlMapClientImpl.java:149)
> >     at
> > com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.autoEndTransaction(
> > SqlMapExecutorDelegate.java:880)
> >     at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList
> > (SqlMapExecutorDelegate.java:621)
> >     at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList
> > (SqlMapExecutorDelegate.java :588)
> >     at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(
> > SqlMapSessionImpl.java:118)
> >     at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForList(
> > SqlMapClientImpl.java:96)
> >     at
> > com.ibatis.sqlmap.engine.mapping.result.loader.ResultLoader.getResult (
> > ResultLoader.java:72)
> >     at
> > com.ibatis.sqlmap.engine.mapping.result.loader.ResultLoader.loadResult(
> > ResultLoader.java:59)
> >     at
> > com.ibatis.sqlmap.engine.mapping.result.BasicResultMap.getNestedSelectMappingValue
> > (BasicResultMap.java :504)
> >     at com.ibatis.sqlmap.engine.mapping.result.BasicResultMap.getResults
> > (BasicResultMap.java:340)
> >     at com.ibatis.sqlmap.engine.execution.SqlExecutor.handleResults(
> > SqlExecutor.java:375)
> >     at
> > com.ibatis.sqlmap.engine.execution.SqlExecutor.handleMultipleResults (
> > SqlExecutor.java:295)
> >     at com.ibatis.sqlmap.engine.execution.SqlExecutor.executeQuery(
> > SqlExecutor.java:186)
> >     at
> > com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.sqlExecuteQuery
> > (GeneralStatement.java :205)
> >     at
> > com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryWithCallback
> > (GeneralStatement.java:173)
> >     at
> > com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryForList
> > (GeneralStatement.java :123)
> >     at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList
> > (SqlMapExecutorDelegate.java:614)
> >     at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList
> > (SqlMapExecutorDelegate.java:588)
> >     at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(
> > SqlMapSessionImpl.java:118)
> >     at
> > org.springframework.orm.ibatis.SqlMapClientTemplate$3.doInSqlMapClient(
> > SqlMapClientTemplate.java:263)
> >     at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(
> > SqlMapClientTemplate.java:188)
> >     at
> > org.springframework.orm.ibatis.SqlMapClientTemplate.executeWithListResult
> > (SqlMapClientTemplate.java:214)
> >     at org.springframework.orm.ibatis.SqlMapClientTemplate.queryForList(
> > SqlMapClientTemplate.java:261)
> >
> > -------
> >
> > Thanks,
> >
> > David Y. Hodge
> >
>
>

Re: iBatis 2.2.0 and Spring Framework 2.0 Bug

Posted by Jeff Butler <je...@gmail.com>.
We've seen this before:

http://www.mail-archive.com/user-java@ibatis.apache.org/msg06009.html

The bottom line is that you should inject the datasource into the
SQLMapClient, NOT each DAO - this is what is shown in the Spring
documentation, and is the supported method.

Jeff Butler



On 12/8/06, David Hodge <dy...@gmail.com> wrote:
>
> This happens when executing a query for list that has a subselect.  We are
> using the SqlMapClientDaoSupport and setting the data source in each DAO
> instead of in the SQLMapClient.  However, by setting the data source in the
> the SQLMapClient, then it works fine.
>
>
> We investigated but we are not sure why this happens.
>
> Here is the stack trace:
>
> java.lang.NullPointerException
>     at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.endTransaction
> (SqlMapExecutorDelegate.java :780)
>     at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.endTransaction(
> SqlMapSessionImpl.java:170)
>     at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.endTransaction(
> SqlMapClientImpl.java:149)
>     at
> com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.autoEndTransaction (
> SqlMapExecutorDelegate.java:880)
>     at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(
> SqlMapExecutorDelegate.java:621)
>     at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(
> SqlMapExecutorDelegate.java :588)
>     at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(
> SqlMapSessionImpl.java:118)
>     at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForList(
> SqlMapClientImpl.java:96)
>     at
> com.ibatis.sqlmap.engine.mapping.result.loader.ResultLoader.getResult (
> ResultLoader.java:72)
>     at
> com.ibatis.sqlmap.engine.mapping.result.loader.ResultLoader.loadResult(
> ResultLoader.java:59)
>     at
> com.ibatis.sqlmap.engine.mapping.result.BasicResultMap.getNestedSelectMappingValue
> (BasicResultMap.java :504)
>     at com.ibatis.sqlmap.engine.mapping.result.BasicResultMap.getResults(
> BasicResultMap.java:340)
>     at com.ibatis.sqlmap.engine.execution.SqlExecutor.handleResults(
> SqlExecutor.java:375)
>     at
> com.ibatis.sqlmap.engine.execution.SqlExecutor.handleMultipleResults (
> SqlExecutor.java:295)
>     at com.ibatis.sqlmap.engine.execution.SqlExecutor.executeQuery(
> SqlExecutor.java:186)
>     at
> com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.sqlExecuteQuery
> (GeneralStatement.java :205)
>     at
> com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryWithCallback
> (GeneralStatement.java:173)
>     at
> com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryForList
> (GeneralStatement.java :123)
>     at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(
> SqlMapExecutorDelegate.java:614)
>     at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(
> SqlMapExecutorDelegate.java:588)
>     at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(
> SqlMapSessionImpl.java:118)
>     at
> org.springframework.orm.ibatis.SqlMapClientTemplate$3.doInSqlMapClient(
> SqlMapClientTemplate.java:263)
>     at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(
> SqlMapClientTemplate.java:188)
>     at
> org.springframework.orm.ibatis.SqlMapClientTemplate.executeWithListResult(
> SqlMapClientTemplate.java:214)
>     at org.springframework.orm.ibatis.SqlMapClientTemplate.queryForList (
> SqlMapClientTemplate.java:261)
>
> -------
>
> Thanks,
>
> David Y. Hodge
>