Package org.hibernate.loader.plan.exec.spi

Examples of org.hibernate.loader.plan.exec.spi.EntityReferenceAliases


    fetchStats.processingFetch( fetch );

    // First write out the SQL SELECT fragments
    final Joinable joinable = (Joinable) fetch.getEntityPersister();
    EntityReferenceAliases aliases = aliasResolutionContext.resolveEntityReferenceAliases(
        fetch.getQuerySpaceUid()
    );

    // the null arguments here relate to many-to-many fetches
    selectStatementBuilder.appendSelectClauseFragment(
        joinable.selectFragment(
            null,
            null,
            aliases.getTableAlias(),
            aliases.getColumnAliases().getSuffix(),
            null,
            true
        )
    );
View Full Code Here


      if ( StringHelper.isNotEmpty( ordering ) ) {
        selectStatementBuilder.appendOrderByFragment( ordering );
      }

      // add an EntityReferenceInitializer for the collection elements (keys also?)
      final EntityReferenceAliases entityReferenceAliases = new EntityReferenceAliasesImpl(
          aliases.getCollectionTableAlias(),
          aliases.getEntityElementColumnAliases()
      );
      aliasResolutionContext.registerQuerySpaceAliases( fetch.getQuerySpaceUid(), entityReferenceAliases );
      readerCollector.add(
          new EntityReferenceInitializerImpl(
              (EntityReference) fetch.getElementGraph(),
              entityReferenceAliases
          )
      );
    }
    else {
      // select the "collection columns"
      selectStatementBuilder.appendSelectClauseFragment(
          queryableCollection.selectFragment(
              aliases.getElementTableAlias(),
              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 EntityReferenceAliasesImpl(
            aliases.getElementTableAlias(),
            aliases.getEntityElementColumnAliases()
        );
        aliasResolutionContext.registerQuerySpaceAliases( fetch.getQuerySpaceUid(), entityReferenceAliases );
        readerCollector.add(
View Full Code Here

    printWriter.println(
        TreePrinterHelper.INSTANCE.generateNodePrefix( depth+3 )
            + "SQL table alias mapping - " + resolveSqlTableAliasFromQuerySpaceUid( querySpace.getUid() )
    );

    final EntityReferenceAliases entityAliases = resolveEntityReferenceAliases( querySpace.getUid() );
    final CollectionReferenceAliases collectionReferenceAliases = resolveCollectionReferenceAliases( querySpace.getUid() );

    if ( entityAliases != null ) {
      printWriter.println(
          TreePrinterHelper.INSTANCE.generateNodePrefix( depth+3 )
              + "alias suffix - " + entityAliases.getColumnAliases().getSuffix()
      );
      printWriter.println(
          TreePrinterHelper.INSTANCE.generateNodePrefix( depth+3 )
              + "suffixed key columns - "
              + StringHelper.join( ", ", entityAliases.getColumnAliases().getSuffixedKeyAliases() )
      );
    }

    if ( collectionReferenceAliases != null ) {
      printWriter.println(
View Full Code Here

    }

    stats.processingFetch( fetch );

    // write the fragments for this fetch to the in-flight SQL builder
    final EntityReferenceAliases aliases = renderSqlFragments(
        selectStatementBuilder,
        factory,
        joinFragment,
        fetchOwner,
        fetch,
View Full Code Here

      JoinFragment joinFragment,
      FetchOwner fetchOwner,
      EntityFetch fetch,
      QueryBuildingParameters buildingParameters,
      AliasResolutionContext aliasResolutionContext) {
    final EntityReferenceAliases aliases = aliasResolutionContext.resolveAliases( fetch );

    final String rhsAlias = aliases.getTableAlias();
    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 additionalJoinConditions = resolveAdditionalJoinCondition(
        factory,
        rhsAlias,
        fetchOwner,
        fetch,
        buildingParameters.getQueryInfluencers(),
        aliasResolutionContext
    );

    final Joinable joinable = (Joinable) fetch.getEntityPersister();

    addJoins(
        joinFragment,
        joinable,
        fetch.isNullable() ? JoinType.LEFT_OUTER_JOIN : JoinType.INNER_JOIN,
        rhsAlias,
        rhsColumnNames,
        aliasedLhsColumnNames,
        additionalJoinConditions
    );

    // the null arguments here relate to many-to-many fetches
    selectStatementBuilder.appendSelectClauseFragment(
        joinable.selectFragment(
            null,
            null,
            rhsAlias,
            aliases.getColumnAliases().getSuffix(),
            null,
            true
        )
    );
View Full Code Here

      // todo : add a mapping here from EntityReference -> EntityReferenceReader
      //
      // need to be careful here about bi-directionality, just not sure how to best check for bi-directionality here.
      //
      final EntityReference fetchedEntityReference = (EntityReference) fetch;
      final EntityReferenceAliases fetchedAliases = aliasResolutionContext.resolveAliases( fetchedEntityReference );

      if ( BidirectionalEntityFetch.class.isInstance( fetchedEntityReference ) ) {
        return;
      }
View Full Code Here

      if ( StringHelper.isNotEmpty( ordering ) ) {
        selectStatementBuilder.appendOrderByFragment( ordering );
      }


      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,
                  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();
          }
View Full Code Here

            + "SQL table alias mapping - " + aliasResolutionContext.resolveSqlTableAliasFromQuerySpaceUid(
            querySpace.getUid()
        )
    );

    final EntityReferenceAliases entityAliases = aliasResolutionContext.resolveEntityReferenceAliases( querySpace.getUid() );
    final CollectionReferenceAliases collectionReferenceAliases = aliasResolutionContext.resolveCollectionReferenceAliases( querySpace.getUid() );

    if ( entityAliases != null ) {
      printWriter.println(
          TreePrinterHelper.INSTANCE.generateNodePrefix( depth + detailDepthOffset )
              + "alias suffix - " + entityAliases.getColumnAliases().getSuffix()
      );
      printWriter.println(
          TreePrinterHelper.INSTANCE.generateNodePrefix( depth + detailDepthOffset )
              + "suffixed key columns - {"
              + StringHelper.join( ", ", entityAliases.getColumnAliases().getSuffixedKeyAliases() )
              + "}"
      );
    }

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

TOP

Related Classes of org.hibernate.loader.plan.exec.spi.EntityReferenceAliases

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.