SqlMapClient operation; uncategorized SQLException for SQL []; SQL state [null]; error code [0]; 异常解决

ibatis的openSession在上一版本时,每次打开的都是同一session,   因为它原来的代码在每次打开前会去localSqlMapSession中查找,如果没有才会打开个新的,而且会在返回前放入localSqlMapSession中,这被认为是一个BUG,所以在这个版本上改为返回一个新的session.而在这个session关闭时,才会把这个session返回给sessionPool中.  
          而在spring中,如楼上我的贴子所说,新打开的session没有进入localSqlMapSession,在打开一对多的表的子表时,   于是从sessionPool中得到一个没有被spring设置过setUserConnection的session,从而Transaction   trans   =   getTransaction(session);这里没有得到缺省的事务,那么   trans   =   autoStartTransaction(session,   autoStart,   trans);代码里就会去找这个session的txManager来启动一个事务,但txManager又是null,于是就会发出nullpoint异常了.  
          这时关键就是session的txManager是什么时候设置的.   我们可以看一下spring的SqlMapClientFactoryBean的代码就会发现,只有设置了它的dataSource属性时,才会去设置session的txManager,   所以这里就可以看出在一对多表时,SqlMapClientFactoryBean的dataSource属性一定要设置,   这样能保证在一对多时才不会出问题.


Tags: 异常  SqlMapClient  SQLException  ibatis  
分页:[«] 1[»]
Feed订阅集
勤劳致富^.^
Powered By Z-Blog   STYLE by busfly . FatMouse
Copyright © 2007 巴士飞扬技术博客. . 沪ICP备07027972号. 会员群1(VS为主):3769186.