[ http://issues.apache.org/jira/browse/IBATIS-320?page=comments#action_12423374 ] Andrey commented on IBATIS-320: -------------------------------
I got the same problem, I need separate transactions, but all design in Dao and SqlMap are the same - all transactions stored in ThreadLocal Look at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl (unnecessary code skipped) public class SqlMapClientImpl implements ExtendedSqlMapClient { protected ThreadLocal localSqlMapSession = new ThreadLocal(); public SqlMapSession openSession() { SqlMapSessionImpl sqlMapSession = getLocalSqlMapSession(); sqlMapSession.open(); return sqlMapSession; } protected SqlMapSessionImpl getLocalSqlMapSession() { SqlMapSessionImpl sqlMapSession = (SqlMapSessionImpl) localSqlMapSession.get(); if (sqlMapSession == null || sqlMapSession.isClosed()) { sqlMapSession = new SqlMapSessionImpl(this); localSqlMapSession.set(sqlMapSession); } return sqlMapSession; } } As you can see, session always got from ThreadLocal(). You can start separate thread, i.e. "Unit Of Work" and do things in it. I think that this will be more clean desigin... > When every method call openSession() return same object . > --------------------------------------------------------- > > Key: IBATIS-320 > URL: http://issues.apache.org/jira/browse/IBATIS-320 > Project: iBatis for Java > Issue Type: Bug > Components: SQL Maps > Affects Versions: 2.1.7 > Environment: windows xp, x86, mysql, eclipse, ibatis 2.1.7.597 > Reporter: Hoyoung Hwang > > When every method call openSession() return same object . > i try below code > ---------------------------------------------- > Reader reader = Resources.getResourceAsReader("sql-map-config.xml"); > SqlMapClient client = SqlMapClientBuilder.buildSqlMapClient(reader); > SqlMapSession sess1 = client .openSession(); > SqlMapSession sess2 = client .openSession(); > if(sess1 == sess2) { // <-- this code return true. > System.out.println("equal"); > } > sess1.startTransaction(); > sess2.startTransaction(); // <-- error occure : > // error description is TransactionManager could not start a new > transaction. A transaction is already started. > ------------------------------------------------------------- > this bugs is discussed in mailing lists > (http://www.mail-archive.com/user-java@ibatis.apache.org/msg04956.html) > want to have multiple independent transactions in the same thread. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira