I found one reference to this:

http://www.google.com/search?q=cache:y2UKgchz25IJ:mail-archives.apache.org/mod_mbox/incubator-ibatis-user-java/200502.mbox/%253C16178eb10502262030d30d080%40mail.gmail.com%253E+at+com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.endTransaction(SqlMapExecutorDelegate.java:776)&hl=en

According to the solution, I should add a TransactionManager to my sqlmap.
I haven't yet tried, but how does this play with Spring's transactions? My
transactions are currently setup via Spring's AOP framework:

            ProxyFactory pf = new ProxyFactory();
            pf.addInterface(DeploymentDao.class);
            pf.setTarget(new DeploymentDaoIbatis(ds));
            Properties p = new Properties();
            p.setProperty("create*", "ISOLATION_REPEATABLE_READ");
            p.setProperty("update*", "ISOLATION_REPEATABLE_READ");
            p.setProperty("remove*", "ISOLATION_REPEATABLE_READ");
            p.setProperty("*", "PROPAGATION_REQUIRED,readOnly");
            TransactionInterceptor ti = new TransactionInterceptor();
            ti.setTransactionAttributes(p);
            ti.setTransactionManager(new DataSourceTransactionManager(ds));
            pf.addAdvisor(new TransactionAttributeSourceAdvisor(ti));
            return (DeploymentDao) pf.getProxy();

For now I have turned lazy loading off; however I'd appreciate if somebody
could provide a workaround, since lazy loading seems to be valuable.

Thanks
Reuben

> What's going on here? I'm using Spring's transactions, not the Ibatis
> ones.
>
>
> java.lang.NullPointerException
>       at
> com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.endTransaction(SqlMapExecutorDelegate.java:776)
>       at
> com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.endTransaction(SqlMapSessionImpl.java:137)
>       at
> com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.endTransaction(SqlMapClientImpl.java:115)
>       at
> com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.autoEndTransaction(SqlMapExecutorDelegate.java:860)
>       at
> com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:617)
>       at
> com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:584)
>       at
> com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSessionImpl.java:101)
>       at
> com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForList(SqlMapClientImpl.java:78)
>       at
> com.ibatis.sqlmap.engine.mapping.result.loader.ResultLoader.getResult(ResultLoader.java:72)
>       at
> com.ibatis.sqlmap.engine.mapping.result.loader.LazyResultLoader.loadObject(LazyResultLoader.java:98)
>       at
> com.ibatis.sqlmap.engine.mapping.result.loader.LazyResultLoader.invoke(LazyResultLoader.java:81)
>       at $Proxy1.toArray(Unknown Source)
>       at cnwk.deploy.beans.Operation.getScripts(Operation.java:142)
>
>


Reply via email to