Examples of CollectionEntry


Examples of org.hibernate.engine.spi.CollectionEntry

      // retain the same snapshot
      targetSnapshot = resultSnapshot;

    }

    CollectionEntry ce = session.getPersistenceContext().getCollectionEntry( result );
    if ( ce != null ) {
      ce.resetStoredSnapshot( result, targetSnapshot );
    }

  }
View Full Code Here

Examples of org.hibernate.engine.spi.CollectionEntry

    return getEntity( session.generateEntityKey( key, collectionPersister.getOwnerEntityPersister() ) );
  }

  @Override
  public Object getLoadedCollectionOwnerOrNull(PersistentCollection collection) {
    final CollectionEntry ce = getCollectionEntry( collection );
    if ( ce.getLoadedPersister() == null ) {
      return null;
    }

    Object loadedOwner = null;
    // TODO: an alternative is to check if the owner has changed; if it hasn't then
    // return collection.getOwner()
    final Serializable entityId = getLoadedCollectionOwnerIdOrNull( ce );
    if ( entityId != null ) {
      loadedOwner = getCollectionOwner( entityId, ce.getLoadedPersister() );
    }
    return loadedOwner;
  }
View Full Code Here

Examples of org.hibernate.engine.spi.CollectionEntry

    return ce.getLoadedPersister().getCollectionType().getIdOfOwnerOrNull( ce.getLoadedKey(), session );
  }

  @Override
  public void addUninitializedCollection(CollectionPersister persister, PersistentCollection collection, Serializable id) {
    final CollectionEntry ce = new CollectionEntry( collection, persister, id, flushing );
    addCollection( collection, ce, id );
    if ( persister.getBatchSize() > 1 ) {
      getBatchFetchQueue().addBatchLoadableCollection( collection, ce );
    }
  }
View Full Code Here

Examples of org.hibernate.engine.spi.CollectionEntry

    }
  }

  @Override
  public void addUninitializedDetachedCollection(CollectionPersister persister, PersistentCollection collection) {
    final CollectionEntry ce = new CollectionEntry( persister, collection.getKey() );
    addCollection( collection, ce, collection.getKey() );
    if ( persister.getBatchSize() > 1 ) {
      getBatchFetchQueue().addBatchLoadableCollection( collection, ce );
    }
  }
View Full Code Here

Examples of org.hibernate.engine.spi.CollectionEntry

   *
   * @param collection The collection for which we are adding an entry.
   * @param persister The collection persister
   */
  private void addCollection(PersistentCollection collection, CollectionPersister persister) {
    final CollectionEntry ce = new CollectionEntry( persister, collection );
    collectionEntries.put( collection, ce );
  }
View Full Code Here

Examples of org.hibernate.engine.spi.CollectionEntry

    if ( collection.isUnreferenced() ) {
      //treat it just like a new collection
      addCollection( collection, collectionPersister );
    }
    else {
      final CollectionEntry ce = new CollectionEntry( collection, session.getFactory() );
      addCollection( collection, ce, collection.getKey() );
    }
  }
View Full Code Here

Examples of org.hibernate.engine.spi.CollectionEntry

  }

  @Override
  public CollectionEntry addInitializedCollection(CollectionPersister persister, PersistentCollection collection, Serializable id)
      throws HibernateException {
    final CollectionEntry ce = new CollectionEntry( collection, persister, id, flushing );
    ce.postInitialize( collection );
    addCollection( collection, ce, id );
    return ce;
  }
View Full Code Here

Examples of org.hibernate.engine.spi.CollectionEntry

        LOG.trace( "Starting deserialization of [" + count + "] collectionEntries entries" );
      }
      rtn.collectionEntries = IdentityMap.instantiateSequenced( count < INIT_COLL_SIZE ? INIT_COLL_SIZE : count );
      for ( int i = 0; i < count; i++ ) {
        final PersistentCollection pc = (PersistentCollection) ois.readObject();
        final CollectionEntry ce = CollectionEntry.deserialize( ois, session );
        pc.setCurrentSession( session );
        rtn.collectionEntries.put( pc, ce );
      }

      count = ois.readInt();
View Full Code Here

Examples of org.hibernate.engine.spi.CollectionEntry

   */
  private void deleteOrphans(String entityName, PersistentCollection pc) throws HibernateException {
    //TODO: suck this logic into the collection!
    final Collection orphans;
    if ( pc.wasInitialized() ) {
      final CollectionEntry ce = eventSource.getPersistenceContext().getCollectionEntry( pc );
      orphans = ce==null
          ? java.util.Collections.EMPTY_LIST
          : ce.getOrphans( entityName, pc );
    }
    else {
      orphans = pc.getQueuedOrphans( entityName );
    }

View Full Code Here

Examples of org.hibernate.engine.spi.CollectionEntry

    }
  }

  private static void processDereferencedCollection(PersistentCollection coll, SessionImplementor session) {
    final PersistenceContext persistenceContext = session.getPersistenceContext();
    final CollectionEntry entry = persistenceContext.getCollectionEntry( coll );
    final CollectionPersister loadedPersister = entry.getLoadedPersister();

    if ( loadedPersister != null && LOG.isDebugEnabled() ) {
      LOG.debugf(
          "Collection dereferenced: %s",
          MessageHelper.collectionInfoString( loadedPersister,
              coll, entry.getLoadedKey(), session
          )
      );
    }

    // do a check
    final boolean hasOrphanDelete = loadedPersister != null && loadedPersister.hasOrphanDelete();
    if ( hasOrphanDelete ) {
      Serializable ownerId = loadedPersister.getOwnerEntityPersister().getIdentifier( coll.getOwner(), session );
      if ( ownerId == null ) {
        // the owning entity may have been deleted and its identifier unset due to
        // identifier-rollback; in which case, try to look up its identifier from
        // the persistence context
        if ( session.getFactory().getSettings().isIdentifierRollbackEnabled() ) {
          final EntityEntry ownerEntry = persistenceContext.getEntry( coll.getOwner() );
          if ( ownerEntry != null ) {
            ownerId = ownerEntry.getId();
          }
        }
        if ( ownerId == null ) {
          throw new AssertionFailure( "Unable to determine collection owner identifier for orphan-delete processing" );
        }
      }
      final EntityKey key = session.generateEntityKey( ownerId, loadedPersister.getOwnerEntityPersister() );
      final Object owner = persistenceContext.getEntity( key );
      if ( owner == null ) {
        throw new AssertionFailure(
            "collection owner not associated with session: " +
            loadedPersister.getRole()
        );
      }
      final EntityEntry e = persistenceContext.getEntry( owner );
      //only collections belonging to deleted entities are allowed to be dereferenced in the case of orphan delete
      if ( e != null && e.getStatus() != Status.DELETED && e.getStatus() != Status.GONE ) {
        throw new HibernateException(
            "A collection with cascade=\"all-delete-orphan\" was no longer referenced by the owning entity instance: " +
            loadedPersister.getRole()
        );
      }
    }

    // do the work
    entry.setCurrentPersister( null );
    entry.setCurrentKey( null );
    prepareCollectionForUpdate( coll, entry, session.getFactory() );

  }
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.