[
https://hibernate.onjira.com/browse/HHH-7017?page=com.atlassian.jira.plug...
]
Vladimir Velikiy commented on HHH-7017:
---------------------------------------
A small addition: If I enable autocommit option for connection - all works fine, but this
is not a good practice. I think a temporary session must use the existing connection with
started transaction, instead of creating new in the code above.
Thus, the full description of the problem:
Envers does not write data in database in case of resource-local transactions, manual
session flush mode and disabled autocommit.
Envers does not work in case of resource-local transactions and
manual session flush mode
-----------------------------------------------------------------------------------------
Key: HHH-7017
URL:
https://hibernate.onjira.com/browse/HHH-7017
Project: Hibernate ORM
Issue Type: Bug
Components: envers
Affects Versions: 3.6.9
Environment: Hibernate 3.6.9, MySQL 5.1.44-community, mysql-connector-java-5.1.6,
Inno DB tables
Reporter: Vladimir Velikiy
Assignee: Adam Warski
Labels: auditing
When I set a manual hibernate session flush mode envers does not write data in database.
With FlushMode.AUTO all works ok. I think the problem in in a method
doBeforeTransactionCompletion of the AuditProcess.java:
if (FlushMode.isManualFlushMode(session.getFlushMode())) {
Session temporarySession = null;
try {
temporarySession = session.getFactory().openTemporarySession();
executeInSession(temporarySession);
temporarySession.flush();
} finally {
if (temporarySession != null) {
temporarySession.close();
}
}
} else {
executeInSession((Session) session);
// Explicity flushing the session, as the auto-flush may have already
happened.
session.flush();
}
In non-jta environment temporary session connection transaction is not commited.
--
This message is automatically generated by JIRA.
For more information on JIRA, see:
http://www.atlassian.com/software/jira