public Set getCollectionKeys() { return Collections.unmodifiableSet( session.getPersistenceContext().getCollectionsByKey().keySet() ); }
public Set getCollectionKeys() { return Collections.unmodifiableSet( session.getPersistenceContext().getCollectionsByKey().keySet() ); }
/** * 1. Recreate the collection key -> collection map * 2. rebuild the collection entries * 3. call Interceptor.postFlush() */ protected void postFlush(SessionImplementor session) throws HibernateException { log.trace( "post flush" ); final PersistenceContext persistenceContext = session.getPersistenceContext(); persistenceContext.getCollectionsByKey().clear(); persistenceContext.getBatchFetchQueue().clearSubselects(); //the database has changed now, so the subselect results need to be invalidated Iterator iter = persistenceContext.getCollectionEntries().entrySet().iterator(); while ( iter.hasNext() ) { Map.Entry me = (Map.Entry) iter.next(); CollectionEntry ce = (CollectionEntry) me.getValue(); PersistentCollection pc = (PersistentCollection) me.getKey(); if ( ce.postFlush(pc) ) { //if the collection is dereferenced, remove from the session cache iter.remove(); } else if ( ce.isReached() ) { //otherwise recreate the mapping between the collection and its key persistenceContext.getCollectionsByKey().put( new CollectionKey( ce.getCurrentPersister(), ce.getCurrentKey(), session.getEntityMode() ), pc ); } } session.getInterceptor().postFlush( persistenceContext.getEntitiesByKey().values().iterator() ); }
persistenceContext.getCollectionsByKey().clear(); persistenceContext.getBatchFetchQueue() session.getEntityMode() ); persistenceContext.getCollectionsByKey() .put(collectionKey, persistentCollection);
private void evictCollection(PersistentCollection collection) { CollectionEntry ce = (CollectionEntry) getSession().getPersistenceContext().getCollectionEntries().remove(collection); if ( log.isDebugEnabled() ) log.debug( "evicting collection: " + MessageHelper.collectionInfoString( ce.getLoadedPersister(), ce.getLoadedKey(), getSession().getFactory() ) ); if ( ce.getLoadedPersister() != null && ce.getLoadedKey() != null ) { //TODO: is this 100% correct? getSession().getPersistenceContext().getCollectionsByKey().remove( new CollectionKey( ce.getLoadedPersister(), ce.getLoadedKey(), getSession().getEntityMode() ) ); } }
private void evictCollection(PersistentCollection collection) { CollectionEntry ce = (CollectionEntry) getSession().getPersistenceContext().getCollectionEntries().remove(collection); if ( log.isDebugEnabled() ) log.debug( "evicting collection: " + MessageHelper.collectionInfoString( ce.getLoadedPersister(), ce.getLoadedKey(), getSession().getFactory() ) ); if ( ce.getLoadedPersister() != null && ce.getLoadedKey() != null ) { //TODO: is this 100% correct? getSession().getPersistenceContext().getCollectionsByKey().remove( new CollectionKey( ce.getLoadedPersister(), ce.getLoadedKey(), getSession().getEntityMode() ) ); } }