Package org.hibernate.persister.collection

Examples of org.hibernate.persister.collection.CollectionPersister


 
  protected Object readElementByIndex(Object index) {
    if (!initialized) {
      throwLazyInitializationExceptionIfNotConnected();
      CollectionEntry entry = session.getPersistenceContext().getCollectionEntry(this);
      CollectionPersister persister = entry.getLoadedPersister();
      if ( persister.isExtraLazy() ) {
        if ( hasQueuedOperations() ) {
          session.flush();
        }
        return persister.getElementByIndex( entry.getLoadedKey(), index, session, owner );
      }
    }
    read();
    return UNKNOWN;
   
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

    scalarColumnNames = NameGenerator.generateColumnNames( returnTypes, getFactory() );

    // initialize the Set of queried identifier spaces (ie. tables)
    Iterator iter = collections.values().iterator();
    while ( iter.hasNext() ) {
      CollectionPersister p = getCollectionPersister( ( String ) iter.next() );
      addQuerySpaces( p.getCollectionSpaces() );
    }
    iter = typeMap.keySet().iterator();
    while ( iter.hasNext() ) {
      Queryable p = getEntityPersisterForName( ( String ) iter.next() );
      addQuerySpaces( p.getQuerySpaces() );
    }

    sqlString = sql.toQueryString();

    if ( holderClass != null ) holderConstructor = ReflectHelper.getConstructor( holderClass, returnTypes );
View Full Code Here

        final Object owner = hasCollectionOwners ?
            row[ collectionOwners[i] ] :
            null; //if null, owner will be retrieved from session

        final CollectionPersister collectionPersister = collectionPersisters[i];
        final Serializable key;
        if ( owner == null ) {
          key = null;
        }
        else {
          key = collectionPersister.getCollectionType().getKeyOfOwner( owner, session );
          //TODO: old version did not require hashmap lookup:
          //keys[collectionOwner].getIdentifier()
        }

        readCollectionElement(
View Full Code Here

   * @param owner The collection owner
   * @return The collection
   */
  public Object getCollection(Serializable key, SessionImplementor session, Object owner) {

    CollectionPersister persister = getPersister( session );
    final PersistenceContext persistenceContext = session.getPersistenceContext();
    final EntityMode entityMode = persister.getOwnerEntityPersister().getEntityMode();

    // check if collection is currently being loaded
    PersistentCollection collection = persistenceContext.getLoadContexts().locateLoadingCollection( persister, key );
   
    if ( collection == null ) {
     
      // check if it is already completely loaded, but unowned
      collection = persistenceContext.useUnownedCollection( new CollectionKey(persister, key, entityMode) );
     
      if ( collection == null ) {
        // create a new collection wrapper, to be initialized later
        collection = instantiate( session, persister, key );
       
        collection.setOwner(owner);
 
        persistenceContext.addUninitializedCollection( persister, collection, key );
 
        // some collections are not lazy:
        if ( initializeImmediately() ) {
          session.initializeCollection( collection, false );
        }
        else if ( !persister.isLazy() ) {
          persistenceContext.addNonLazyCollection( collection );
        }
 
        if ( hasHolder() ) {
          session.getPersistenceContext().addCollectionHolder( collection );
View Full Code Here

    // this is a collection initializer, so we must create a collection
    // for each of the passed-in keys, to account for the possibility
    // that the collection is empty and has no rows in the result set
    //
    // todo : move this inside CollectionReturn ?
    CollectionPersister persister = ( (CollectionReturn) loadPlan.getReturns().get( 0 ) ).getCollectionPersister();
    for ( Serializable key : collectionKeys ) {
      if ( LOG.isDebugEnabled() ) {
        LOG.debugf(
            "Preparing collection intializer : %s",
              MessageHelper.collectionInfoString( persister, key, session.getFactory() )
View Full Code Here

      throw new IllegalStateException( "Collection element (many-to-many) table alias cannot be empty" );
    }
    if ( JoinDefinedByMetadata.class.isInstance( join ) &&
        CollectionPropertyNames.COLLECTION_ELEMENTS.equals( ( (JoinDefinedByMetadata) join ).getJoinedPropertyName() ) ) {
      final CollectionQuerySpace leftHandSide = (CollectionQuerySpace) join.getLeftHandSide();
      final CollectionPersister persister = leftHandSide.getCollectionPersister();
      final String manyToManyFilter = persister.getManyToManyFilterFragment(
          entityTableAlias,
          buildingParameters.getQueryInfluencers().getEnabledFilters()
      );
      joinFragment.addCondition( manyToManyFilter );
    }
View Full Code Here

        final Object owner = hasCollectionOwners ?
            row[ collectionOwners[i] ] :
            null; //if null, owner will be retrieved from session

        final CollectionPersister collectionPersister = collectionPersisters[i];
        final Serializable key;
        if ( owner == null ) {
          key = null;
        }
        else {
          key = collectionPersister.getCollectionType().getKeyOfOwner( owner, session );
          //TODO: old version did not require hashmap lookup:
          //keys[collectionOwner].getIdentifier()
        }

        readCollectionElement(
View Full Code Here

    // note: the logic for adding to the userAliasList is still strictly based on consumesEntityAlias return value
    boolean checkForSqlAlias = joinable.consumesEntityAlias();

    if ( !checkForSqlAlias && joinable.isCollection() ) {
      // is it a collection-of-other (component or value) ?
      CollectionPersister collectionPersister = (CollectionPersister)joinable;
      Type elementType = collectionPersister.getElementType();
      if ( elementType.isComponentType() || !elementType.isEntityType() ) {
        checkForSqlAlias = true;
       }
    }
View Full Code Here

    scalarColumnNames = NameGenerator.generateColumnNames( returnTypes, getFactory() );

    // initialize the Set of queried identifier spaces (ie. tables)
    Iterator iter = collections.values().iterator();
    while ( iter.hasNext() ) {
      CollectionPersister p = getCollectionPersister( ( String ) iter.next() );
      addQuerySpaces( p.getCollectionSpaces() );
    }
    iter = typeMap.keySet().iterator();
    while ( iter.hasNext() ) {
      Queryable p = getEntityPersisterForName( ( String ) iter.next() );
      addQuerySpaces( p.getQuerySpaces() );
    }

    sqlString = sql.toQueryString();

    if ( holderClass != null ) holderConstructor = ReflectHelper.getConstructor( holderClass, returnTypes );
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.