nonthreadsafe exception in a case where I have only the main thread
-------------------------------------------------------------------
Key: HHH-2765
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HHH-2765
Project: Hibernate3
Issue Type: Bug
Affects Versions: 3.2.3
Environment: JPA
Hibernate 3.2.3.GA
Derby 10.2.2.0
Reporter: Zied Hamdi
Priority: Blocker
Attachments: 20070802-161806 IntoJPA bug report.zip
I think it's because I do a EntityManager.clear() inside a @PreUpdate listener. But it
doesn't really seam forbidden to me since em.merge can be executed on unattached
objects.
I zipped all the source code, JPAMain.main() is my test case. Even though more classes are
implied, I've attempted to make the code as small as possible (for what I'm trying
to do).
I'll help you evolve in this bug as I can, it is really blocking to me :-/
There's an explanation of what I'm trying to do at
http://forum.hibernate.org/viewtopic.php?p=2361052#2361052
here's the stack trace
Hibernate: update Person set startDate=?, endDate=?, note=?, lastOccurence=? where id=?
and revision=?
2007-08-02 15:20:03,171 [main] ERROR org.hibernate.AssertionFailure.<init>(22) - an
assertion failure occured (this may indicate a bug in Hibernate, but is more likely due to
unsafe use of the session)
org.hibernate.AssertionFailure: possible nonthreadsafe access to session
at org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:107)
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:250)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:234)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:142)
at
org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
at
org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:54)
at main.JPAMain.save(JPAMain.java:46)
at main.JPAMain.main(JPAMain.java:19)
javax.persistence.RollbackException: Error while commiting the transaction
at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:71)
at main.JPAMain.save(JPAMain.java:46)
at main.JPAMain.main(JPAMain.java:19)
Caused by: org.hibernate.AssertionFailure: possible nonthreadsafe access to session
at org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:107)
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:250)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:234)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:142)
at
org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
at
org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:54)
... 2 more
2007-08-02 15:20:03,203 [main] INFO org.hibernate.impl.SessionFactoryImpl.close(769) -
closing
2007-08-02 15:20:03,203 [main] INFO
org.hibernate.connection.DriverManagerConnectionProvider.close(147) - cleaning up
connection pool: jdbc:derby://localhost:1527/sample
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://opensource.atlassian.com/projects/hibernate/secure/Administrators....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira