Package org.hibernate.loader.plan.exec.process.internal

Examples of org.hibernate.loader.plan.exec.process.internal.EntityReferenceReader


          new OneToOneFetchReader( fetch, aliases, identifierReader, (EntityReference) fetchOwner )
      );
    }
    else {
      readerCollector.addReader(
          new EntityReferenceReader( fetch, aliases, identifierReader )
      );
    }

    //    3) and then readers for all fetches not part of the identifier
    processJoinFetches(
View Full Code Here


      if ( BidirectionalEntityFetch.class.isInstance( fetchedEntityReference ) ) {
        return;
      }


      final EntityReferenceReader reader = new EntityReferenceReader(
          fetchedEntityReference,
          aliasResolutionContext.resolveAliases( fetchedEntityReference ),
          new EntityIdentifierReaderImpl(
              fetchedEntityReference,
              fetchedAliases,
View Full Code Here

        }
      };

      final EntityReference elementEntityReference = (EntityReference) fetch.getElementGraph();
      readerCollector.addReader(
          new EntityReferenceReader(
              elementEntityReference,
              entityReferenceAliases,
              buildIdentifierReader(
                  selectStatementBuilder,
                  factory,
                  joinFragment,
                  elementEntityReference,
                  buildingParameters,
                  aliasResolutionContext,
                  readerCollector,
                  entityReferenceAliases,
                  stats
              )
          )
      );
    }
    else {
      final QueryableCollection queryableCollection = (QueryableCollection) fetch.getCollectionPersister();
      final Joinable joinableCollection = (Joinable) fetch.getCollectionPersister();

      final String rhsTableAlias = aliases.getElementTableAlias();
      final String[] rhsColumnNames = JoinHelper.getRHSColumnNames( fetch.getFetchedType(), factory );

      final String lhsTableAlias = resolveLhsTableAlias( fetchOwner, fetch, aliasResolutionContext );
      // todo : this is not exactly correct.  it assumes the join refers to the LHS PK
      final String[] aliasedLhsColumnNames = fetch.toSqlSelectFragments( lhsTableAlias );

      final String on = resolveAdditionalJoinCondition(
          factory,
          rhsTableAlias,
          fetchOwner,
          fetch,
          buildingParameters.getQueryInfluencers(),
          aliasResolutionContext
      );

      addJoins(
          joinFragment,
          joinableCollection,
          fetch.isNullable() ? JoinType.LEFT_OUTER_JOIN : JoinType.INNER_JOIN,
          rhsTableAlias,
          rhsColumnNames,
          aliasedLhsColumnNames,
          on
      );

      // select the "collection columns"
      selectStatementBuilder.appendSelectClauseFragment(
          queryableCollection.selectFragment(
              rhsTableAlias,
              aliases.getCollectionColumnAliases().getSuffix()
          )
      );

      if ( fetch.getCollectionPersister().isOneToMany() ) {
        // if the collection elements are entities, select the entity columns as well
        final OuterJoinLoadable elementPersister = (OuterJoinLoadable) queryableCollection.getElementPersister();
        selectStatementBuilder.appendSelectClauseFragment(
            elementPersister.selectFragment(
                aliases.getElementTableAlias(),
                aliases.getEntityElementColumnAliases().getSuffix()
            )
        );

        final EntityReferenceAliases entityReferenceAliases = new EntityReferenceAliases() {
          @Override
          public String getTableAlias() {
            return aliases.getElementTableAlias();
          }

          @Override
          public EntityAliases getColumnAliases() {
            return aliases.getEntityElementColumnAliases();
          }
        };

        final EntityReference elementEntityReference = (EntityReference) fetch.getElementGraph();
        readerCollector.addReader(
            new EntityReferenceReader(
                elementEntityReference,
                entityReferenceAliases,
                buildIdentifierReader(
                    selectStatementBuilder,
                    factory,
View Full Code Here

TOP

Related Classes of org.hibernate.loader.plan.exec.process.internal.EntityReferenceReader

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.