[hibernate-issues] [Hibernate-JIRA] Closed: (HHH-1989) Deleted object remains referenced in 2nd level cache collections

Max Rydahl Andersen (JIRA) noreply at atlassian.com
Fri Aug 11 03:09:19 EDT 2006


     [ http://opensource.atlassian.com/projects/hibernate/browse/HHH-1989?page=all ]
     
Max Rydahl Andersen closed HHH-1989:
------------------------------------

    Resolution: Rejected

"Both the parent and the collection wind up in the 2nd level cache. I then delete an object that is in the collection, not by removing it from the collection, but rather by doing a delete on the object itself. "

So you don't cleanup and maintain your objectgraph ? How should hibernate then ensure the consistency ?

In any respect take a look at the not-found attribute which is there to handle broken datamodels and/or objectgraphs.

> Deleted object remains referenced in 2nd level cache collections
> ----------------------------------------------------------------
>
>          Key: HHH-1989
>          URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-1989
>      Project: Hibernate3
>         Type: Bug

>   Components: core
>     Versions: 3.2.0.cr2
>  Environment: Spring 1.2.8, Hibernate 3.2, Postgres 8.0.3
>     Reporter: Justin Haddad

>
>
> This problem seems identical to issue NH-678.  I have enabled caching for an one-to-many association.  I use Ehcache.  I have a test in which I load the parent object along with its collection.  Both the parent and the collection wind up in the 2nd level cache.  I then delete an object that is in the collection, not by removing it from the collection, but rather by doing a delete on the object itself.   After deleting, I try to reload the parent and get the following exception (User#3102 is the deleted object):
> aused by: org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [com.bluenotenetworks.common.management.sm.User#3102]
> 	at org.hibernate.impl.SessionFactoryImpl$1.handleEntityNotFound(SessionFactoryImpl.java:372)
> 	at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:128)
> 	at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:178)
> 	at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:86)
> 	at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:871)
> 	at org.hibernate.impl.SessionImpl.internalLoad(SessionImpl.java:839)
> 	at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:266)
> 	at org.hibernate.type.ManyToOneType.assemble(ManyToOneType.java:177)
> 	at org.hibernate.collection.PersistentSet.initializeFromCache(PersistentSet.java:101)
> 	at org.hibernate.cache.entry.CollectionCacheEntry.assemble(CollectionCacheEntry.java:35)
> 	at org.hibernate.event.def.DefaultInitializeCollectionEventListener.initializeCollectionFromCache(DefaultInitializeCollectionEventListener.java:130)
> 	at org.hibernate.event.def.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:48)
> 	at org.hibernate.impl.SessionImpl.initializeCollection(SessionImpl.java:1705)
> (continues on)
> I stepped through the code in the debugger and can see that the object's ID (3102 in this case) remains in the cached collection even after the deletion.

-- 
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.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira




More information about the hibernate-issues mailing list