[
http://opensource.atlassian.com/projects/hibernate/browse/HHH-2146?page=c...
]
Alon Salant commented on HHH-2146:
----------------------------------
We are also experiencing this issue.
Another fix that you can use while waiting for the Hibernate core to be patched is to
extend DefaultDeleteEventListener and do the null check:
public class BugFixDeleteEventListener extends DefaultDeleteEventListener
{
protected void deleteTransientEntity(EventSource session, Object entity, boolean
cascadeDeleteEnabled,
EntityPersister persister, Set
transientEntities) {
super.deleteTransientEntity(session, entity, cascadeDeleteEnabled, persister,
transientEntities == null ? new
HashSet() : transientEntities);
}
}
Then you can register this listener in place of the default:
<hibernate-configuration>
<session-factory>
<event type="delete">
<listener class="your.package.BugFixDeleteEventListener"/>
</event>
</session-factory>
</hibernate-configuration>
NullpointerException in
DefaultDeleteEventListener.deleteTransientEntity
------------------------------------------------------------------------
Key: HHH-2146
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HHH-2146
Project: Hibernate3
Issue Type: Bug
Affects Versions: 3.2.0.cr5
Environment: Hibernate 3.2.0cr5, Oracle10g
Reporter: Martin Kartumovich
Priority: Minor
Attachments: Cascade.java, deletetransientmn.zip
The following setup leads to a NPE in DefaultDeleteEventListener.deleteTransientEntity:
Tables A, B
Table V_A_B that is an M-N-Connection between A and B.
Pojo for A has a Set of V_A_Bs.
Pojo for B has a Set of V_A_Bs.
Pojo C that has Sets of As and Bs.
Cascades: all, delete-orphan
-Create a new A and add a new V_A_B to its Set, that references to an existing B.
-Delete B.
-SaveOrUpdate Pojo C.
In Hibernate 3.1.3 this works fine.
In 3.2.0cr4+cr5 the removal of B results into an cascading removal of the never persisted
V_A_B in the Set of B instead of ignoring it.
This leads to an incorrect state where deleteTransientEntity is called with
transientEnties=null.
When now calling transientEnties.contains(...) the NPE is thrown.
--
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