[
https://hibernate.onjira.com/browse/HHH-6960?page=com.atlassian.jira.plug...
]
Gail Badner commented on HHH-6960:
----------------------------------
Fixed by HHH-7316.
The reason it was so hard to reproduce is that there had to be a collection that was
removed from an entity followed by a query that did not require the session to be
auto-flushed prior to query execution.
Auto-flush does not need to flush the session before executing the query if there are no
changes to entities or collections that affect the tables used by the query.
See HHH-7316 for more details.
NullPointerException in PreCollectionRemove Listener
----------------------------------------------------
Key: HHH-6960
URL:
https://hibernate.onjira.com/browse/HHH-6960
Project: Hibernate ORM
Issue Type: Bug
Components: envers
Affects Versions: 4.0.0.Final
Environment: Hibernate 4.0.0 to MySQL
Reporter: Kevin Jordan
Assignee: Gail Badner
Fix For: 4.1.4
Attachments: hibernateBugProofWithSchema.zip, hibernateBugProof.zip
I'm getting a NullPointerException on line 47 of
EnversPreCollectionRemoveEventListenerImpl very consistently. I wasn't sure if it was
due to lazy collections or not, but it seems that it fails if they're eagerly fetched
or lazily fetched. I'm guessing it has something to do with getLoadedPersister()
returning a null value since the comments for it say "This is only available late
during the flush cycle". The stack trace is
Quote:
java.lang.NullPointerException
at
org.hibernate.envers.event.EnversPreCollectionRemoveEventListenerImpl.onPreRemoveCollection(EnversPreCollectionRemoveEventListenerImpl.java:47)
at
org.hibernate.action.internal.CollectionRemoveAction.preRemove(CollectionRemoveAction.java:143)
at
org.hibernate.action.internal.CollectionRemoveAction.execute(CollectionRemoveAction.java:104)
at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:273)
at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:265)
at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:188)
at
org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:323)
at
org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:52)
at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1081)
at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:315)
at
org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.beforeTransactionCommit(JdbcTransaction.java:101)
at
org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:175)
at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:73)
... 120 more
--
This message is automatically generated by JIRA.
For more information on JIRA, see:
http://www.atlassian.com/software/jira