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 "Shannon, Bryan" <BS...@Tribune.com> on 2006/02/09 16:53:20 UTC

Queries act readonly after ibatis upgrade

 
I have been interested in upgrading our project from an early 2.0 release to
the latest release (I'm testing 2.1.7).
 
However, I'm having a problem with a particular chain of insert/update
statements after the upgrade.  When I switch in the new version of iBatis,
my transactions just don't commit correctly.  The statements all execute and
go through the motions, but it appears as if no commit actually takes place
or if the transactions are being rolled back. 
 
I've tried looking in several places to see if changing some config options
would help me, but nothing seems to work.  Does anyone know of a good place
for me to start looking?
 
 
My statements (working with the early 2.0 release) go like this:
 
 
    try {
      sqlMap.startTransaction();
    }
    catch (SQLException sqlEx) {
      throw new DaoException("Error starting transaction for saveMovie()",
sqlEx, loginData);
    }
 
    try {
    sqlMap.insert("myMap.insertRowX", blah1);
    sqlMap.insert("myMap.insertRowA", blah2);
    sqlMap.insert("myMap.insertRowB", blah3);
    sqlMap.insert("myMap.insertRowC", blah4);
    sqlMap.update("myMap.insertRowC", blah5);    
    sqlMap.commitTransaction();
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        sqlMap.endTransaction();
    }
 
 
And they work flawlessly.  In my actual app, there are many more queries,
all in this transaction... 
 
 
Leaving the database (Sybase) the same, everything else the same, and
switching to the new libraries causes everything to run fine... No
exceptions, nothing.  But the data is never updated or inserted, as if a
rollback happened!!  The reason I know that it goes "through the motions" is
that the queries will still die with an exception when trying to insert a
duplicate key value or when I violate some other referential integrity
settings... Also newly created identity values are placed happily back into
the objects after the inserts... Even though after the transaction is
committed, the new rows with those values can't be found in the database!!!
 
I'm using JDBC for the transaction manager, and DBCP for the connection
pool.
 
The most similar problems in the mailing list that I can find are problems
relating to transactions not working in WebsphereAS, (which I'm not using)
and someone mentioning that their commands are rolling back every statement
causing trouble with MS Sql Server (which is pretty much the same as
Sybase).
 
I was crossing my fingers for the solution to appear in the "Ibatis implicit
rollbacks" thread in the mailing list...

What could have changed since the 2.0 release to the 2.1.7 release that
could cause my SQL to stop functioning?.  I'm probably doing something wrong
that happens to work with the earlier 2 release but breaks in the newer
release... If anyone can think of something, I'd be very glad to hear it! 

Thank you very much! 

-Bryan