Package org.hibernate.persister.collection

Examples of org.hibernate.persister.collection.CollectionPersister


    if ( collection == null ) {
      throw new NullPointerException( "null collection passed to filter" );
    }

    CollectionEntry entry = persistenceContext.getCollectionEntryOrNull( collection );
    final CollectionPersister roleBeforeFlush = (entry == null) ? null : entry.getLoadedPersister();

    FilterQueryPlan plan = null;
    if ( roleBeforeFlush == null ) {
      // if it was previously unreferenced, we need to flush in order to
      // get its state into the database in order to execute query
      flush();
      entry = persistenceContext.getCollectionEntryOrNull( collection );
      CollectionPersister roleAfterFlush = (entry == null) ? null : entry.getLoadedPersister();
      if ( roleAfterFlush == null ) {
        throw new QueryException( "The collection was unreferenced" );
      }
      plan = factory.getQueryPlanCache().getFilterQueryPlan( filter, roleAfterFlush.getRole(), shallow, getEnabledFilters() );
    }
    else {
      // otherwise, we only need to flush if there are in-memory changes
      // to the queried tables
      plan = factory.getQueryPlanCache().getFilterQueryPlan( filter, roleBeforeFlush.getRole(), shallow, getEnabledFilters() );
      if ( autoFlushIfRequired( plan.getQuerySpaces() ) ) {
        // might need to run a different filter entirely after the flush
        // because the collection role may have changed
        entry = persistenceContext.getCollectionEntryOrNull( collection );
        CollectionPersister roleAfterFlush = (entry == null) ? null : entry.getLoadedPersister();
        if ( roleBeforeFlush != roleAfterFlush ) {
          if ( roleAfterFlush == null ) {
            throw new QueryException( "The collection was dereferenced" );
          }
          plan = factory.getQueryPlanCache().getFilterQueryPlan( filter, roleAfterFlush.getRole(), shallow, getEnabledFilters() );
        }
      }
    }

    if ( parameters != null ) {
View Full Code Here


    if ( collection == CollectionType.UNFETCHED_COLLECTION ) {
      return null;
    }

    final EventSource session = getSession();
    final CollectionPersister persister = session.getFactory().getCollectionPersister( type.getRole() );

    if ( isUpdate ) {
      removeCollection( persister, extractCollectionKeyFromOwner( persister ), session );
    }
    if ( collection != null && collection instanceof PersistentCollection ) {
View Full Code Here

  @Override
  public Serializable getOwnerId(String entityName, String propertyName, Object childEntity, Map mergeMap) {
    final String collectionRole = entityName + '.' + propertyName;
    final EntityPersister persister = session.getFactory().getEntityPersister( entityName );
    final CollectionPersister collectionPersister = session.getFactory().getCollectionPersister( collectionRole );

      // try cache lookup first
    final Object parent = parentsByChild.get( childEntity );
    if ( parent != null ) {
      final EntityEntry entityEntry = entityEntryContext.getEntityEntry( parent );
View Full Code Here

      final Object parent,
      final Object child,
      final CascadeStyle style,
      final Object anything,
      final CollectionType type) {
    final CollectionPersister persister = eventSource.getFactory().getCollectionPersister( type.getRole() );
    final Type elemType = persister.getElementType();

    final CascadePoint originalCascadePoint = cascadePoint;
    if ( cascadePoint == CascadePoint.AFTER_INSERT_BEFORE_DELETE) {
      cascadePoint = CascadePoint.AFTER_INSERT_BEFORE_DELETE_VIA_COLLECTION;
    }

    //cascade to current collection elements
    if ( elemType.isEntityType() || elemType.isAnyType() || elemType.isComponentType() ) {
      cascadeCollectionElements(
        parent,
        child,
        type,
        style,
        elemType,
        anything,
        persister.isCascadeDeleteEnabled()
      );
    }

    cascadePoint = originalCascadePoint;
  }
View Full Code Here

    final Object owner,
    final java.util.Map copyCache,
    final SessionImplementor session)
    throws HibernateException {

    CollectionPersister cp = session.getFactory().getCollectionPersister( getRole() );
   
    java.util.Map result = (java.util.Map) target;
    result.clear();
   
    Iterator iter = ( (java.util.Map) original ).entrySet().iterator();
    while ( iter.hasNext() ) {
      java.util.Map.Entry me = (java.util.Map.Entry) iter.next();
      Object key = cp.getIndexType().replace( me.getKey(), null, session, owner, copyCache );
      Object value = cp.getElementType().replace( me.getValue(), null, session, owner, copyCache );
      result.put(key, value);
    }
   
    return result;
   
View Full Code Here

    return userType.indexOf(collection, entity);
  }

  public Object replaceElements(Object original, Object target, Object owner, Map copyCache, SessionImplementor session)
  throws HibernateException {
    CollectionPersister cp = session.getFactory().getCollectionPersister( getRole() );
    return userType.replaceElements(original, target, cp, owner, copyCache, session);
  }
View Full Code Here

    if ( collection == null ) {
      //do nothing
      return null;
    }
    else {
      CollectionPersister persister = session.getFactory().getCollectionPersister( collectionType.getRole() );

      final PersistenceContext persistenceContext = session.getPersistenceContext();
      //TODO: move into collection type, so we can use polymorphism!
      if ( collectionType.hasHolder() ) {
View Full Code Here

              @Override
              public Boolean doWork() {
                final CollectionEntry entry = session.getPersistenceContext().getCollectionEntry( AbstractPersistentCollection.this );

                if ( entry != null ) {
                  final CollectionPersister persister = entry.getLoadedPersister();
                  if ( persister.isExtraLazy() ) {
                    if ( hasQueuedOperations() ) {
                      session.flush();
                    }
                    cachedSize = persister.getSize( entry.getLoadedKey(), session );
                    return true;
                  }
                  else {
                    read();
                  }
View Full Code Here

      final Boolean extraLazyExistenceCheck = withTemporarySessionIfNeeded(
          new LazyInitializationWork<Boolean>() {
            @Override
            public Boolean doWork() {
              final CollectionEntry entry = session.getPersistenceContext().getCollectionEntry( AbstractPersistentCollection.this );
              final CollectionPersister persister = entry.getLoadedPersister();
              if ( persister.isExtraLazy() ) {
                if ( hasQueuedOperations() ) {
                  session.flush();
                }
                return persister.indexExists( entry.getLoadedKey(), index, session );
              }
              else {
                read();
              }
              return null;
View Full Code Here

      final Boolean extraLazyExistenceCheck = withTemporarySessionIfNeeded(
          new LazyInitializationWork<Boolean>() {
            @Override
            public Boolean doWork() {
              final CollectionEntry entry = session.getPersistenceContext().getCollectionEntry( AbstractPersistentCollection.this );
              final CollectionPersister persister = entry.getLoadedPersister();
              if ( persister.isExtraLazy() ) {
                if ( hasQueuedOperations() ) {
                  session.flush();
                }
                return persister.elementExists( entry.getLoadedKey(), element, session );
              }
              else {
                read();
              }
              return null;
View Full Code Here

TOP

Related Classes of org.hibernate.persister.collection.CollectionPersister

Copyright © 2018 www.massapicom. 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.