when Session.flush() is called outside of transation - it has strange side effects

Description

following code was tested on non-JTA

When Session.flush() is called outside of transation
all modifications are commited / rolled back during next transaction.

void doModifications(boolean doCommit) {
Session session;
session = sessionFactory.openSession();

Transaction tx = session.beginTransaction();
... modifications here ...
tx.rollback();
session.flush();
tx.begin();
if (doCommit) tx.commit(); else tx.rollback();
session.close();
}

1) session.flush() should not be called outside of transaction (as API documentation says)
2) when session.flush() is called outside of transaction - modifications are attached to the next transaction.
3) Hibernate should throw exception if flush is called after commit / before begin or maybe it should clear session before begin.

a test case and more description is provided on forum:
http://forum.hibernate.org/viewtopic.php?p=2293664#2293664

Activity

Show:

Brett Meyer July 8, 2014 at 3:11 PM

Bulk rejecting stale issues. If this is still a legitimate issue on ORM 4, feel free to comment and attach a test case. I'll address responses case-by-case. Thanks!

Brett Meyer April 7, 2014 at 5:41 PM

In an effort to clean up, in bulk, tickets that are most likely out of date, we're transitioning all ORM 3 tickets to an "Awaiting Test Case" state. Please see http://in.relation.to/Bloggers/HibernateORMJIRAPoliciesAndCleanUpTactics for more information.

If this is still a legitimate bug in ORM 4, please provide either a test case that reproduces it or enough detail (entities, mappings, snippets, etc.) to show that it still fails on 4. If nothing is received within 3 months or so, we'll be automatically closing them.

Thank you!

Rejected

Details

Assignee

Reporter

Components

Affects versions

Priority

Created February 28, 2006 at 2:48 PM
Updated July 8, 2014 at 3:11 PM
Resolved July 8, 2014 at 3:11 PM