Revision: 6604
http://squirrel-sql.svn.sourceforge.net/squirrel-sql/?rev=6604&view=rev
Author: gerdwagner
Date: 2012-03-20 18:52:53 +0000 (Tue, 20 Mar 2012)
Log Message:
-----------
Hibernate Plugin: Improved transaction handling for data manipulation hqls
Modified Paths:
--------------
trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/server/HibernateServerConnectionImpl.java
Modified: trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/server/HibernateServerConnectionImpl.java
===================================================================
--- trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/server/HibernateServerConnectionImpl.java 2012-03-20 01:23:18 UTC (rev 6603)
+++ trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/server/HibernateServerConnectionImpl.java 2012-03-20 18:52:53 UTC (rev 6604)
@@ -276,6 +276,11 @@
int updateCount = (Integer)rc.callMethod("executeUpdate").getCallee();
ret.setUpdateCount(updateCount);
getRcHibernateSession().callMethod("getTransaction").callMethod("commit");
+
+ // No rollback TX after commit because it leads to
+ // org.hibernate.TransactionException: Transaction not successfully started
+ // tryRollbackTx(ret);
+
}
else
{
@@ -285,21 +290,16 @@
}
queryResList = (List) rc.callMethod("list").getCallee();
+ tryRollbackTx(ret);
+
}
}
catch (Throwable t)
{
ret.setExceptionOccuredWhenExecutingQuery(prepareTransport(t));
+ tryRollbackTx(ret);
}
- try
- {
- getRcHibernateSession().callMethod("getTransaction").callMethod("rollback");
- }
- catch (Throwable t)
- {
- ret.putSessionAdminException("Exception occurced during call of Session.getTransaction().rollback()", prepareTransport(t));
- }
try
{
@@ -319,6 +319,18 @@
return ret;
}
+ private void tryRollbackTx(HqlQueryResult ret)
+ {
+ try
+ {
+ getRcHibernateSession().callMethod("getTransaction").callMethod("rollback");
+ }
+ catch (Throwable t)
+ {
+ ret.putSessionAdminException("Exception occurced during call of Session.getTransaction().rollback()", prepareTransport(t));
+ }
+ }
+
private boolean isDataUpdate(String hqlQuery)
{
return null != hqlQuery
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|