[
https://issues.apache.org/jira/browse/TAPESTRY-2659?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Buck O' Five updated TAPESTRY-2659:
-----------------------------------
Description:
A "org.hibernate.TransactionException: Transaction not successfully started "
occurs when a transaction is rolledback in tapestry-hibernate if the
transaction has previously been rolledback. The problem is because
HibernateSessionManagerImpl retains a reference to the transaction. So when
HibernateSessionManagerImpl .threadDidCleanup() or HibernateSessionManagerImpl
abort() is called it does not first check to see if the transaction reference
has been rolled back (somewhere else) before calling rollback. One possible
fix would be to call Transaction.wasRolledback() to determine if
tapestry-hibernate should call trans.rollback(). Another would be to refrain
from keeping a reference to the transaction and always call
Session.beginTransaction().
Q. Why not just inject HibernateSessionManager and call abort()?
A. Because there are times when you do not have control over the code calling
trans.rollback() for example in a third party library (which is how I ran into
this).
was:
A "org.hibernate.TransactionException: Transaction not successfully started "
occurs when a transaction is rolledback in tapestry-hibernate if the
transaction has previously been rolledback. The problem is because
HibernateSessionManagerImpl retains a reference to the transaction. So when
HibernateSessionManagerImpl .threadDidCleanup() is called it does not first
check to see if the transaction reference has been rolled back (somewhere else)
before calling rollback. One possible fix would be to call
Transaction.wasRolledback() to determine if tapestry-hibernate should call
trans.rollback(). Another would be to refrain from keeping a reference to the
transaction and always call Session.beginTransaction().
Q. Why not just inject HibernateSessionManager and call abort()?
A. Because there are times when you do not have control over the code calling
trans.rollback() for example in a third party library (which is how I ran into
this).
> org.hibernate.TransactionException thrown when a transaction is directly
> rolledback (outside of tapestry-hibernate)
> -------------------------------------------------------------------------------------------------------------------
>
> Key: TAPESTRY-2659
> URL: https://issues.apache.org/jira/browse/TAPESTRY-2659
> Project: Tapestry
> Issue Type: Bug
> Components: tapestry-hibernate
> Affects Versions: 5.0.15
> Reporter: Buck O' Five
> Priority: Minor
>
> A "org.hibernate.TransactionException: Transaction not successfully started "
> occurs when a transaction is rolledback in tapestry-hibernate if the
> transaction has previously been rolledback. The problem is because
> HibernateSessionManagerImpl retains a reference to the transaction. So when
> HibernateSessionManagerImpl .threadDidCleanup() or
> HibernateSessionManagerImpl abort() is called it does not first check to see
> if the transaction reference has been rolled back (somewhere else) before
> calling rollback. One possible fix would be to call
> Transaction.wasRolledback() to determine if tapestry-hibernate should call
> trans.rollback(). Another would be to refrain from keeping a reference to the
> transaction and always call Session.beginTransaction().
> Q. Why not just inject HibernateSessionManager and call abort()?
> A. Because there are times when you do not have control over the code calling
> trans.rollback() for example in a third party library (which is how I ran
> into this).
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]