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

Examples of org.hibernate.loader.plan2.exec.process.internal.EntityReferenceInitializerImpl


  private void writeFetch(Fetch fetch, int depth, PrintWriter printWriter) {
    printWriter.print( TreePrinterHelper.INSTANCE.generateNodePrefix( depth ) );

    if ( EntityFetch.class.isInstance( fetch ) ) {
      final EntityFetch entityFetch = (EntityFetch) fetch;
      printWriter.println( extractDetails( entityFetch ) );
      writeEntityReferenceFetches( entityFetch, depth+1, printWriter );
    }
    else if ( CompositeFetch.class.isInstance( fetch ) ) {
      final CompositeFetch compositeFetch = (CompositeFetch) fetch;
View Full Code Here


        attributeDefinition,
        fetchedPersister,
        loadPlanBuildingContext.getQuerySpaces().generateImplicitUid(),
        attributeDefinition.isNullable()
    );
    final EntityFetch fetch = new EntityFetchImpl( this, attributeDefinition, fetchStrategy, join );
    addFetch( fetch );
    return fetch;
  }
View Full Code Here

    );
  }

  private void handleMissingIdentifier(ResultSetProcessingContext context) {
    if ( EntityFetch.class.isInstance( entityReference ) ) {
      final EntityFetch fetch = (EntityFetch) entityReference;
      final EntityType fetchedType = fetch.getFetchedType();
      if ( ! fetchedType.isOneToOne() ) {
        return;
      }

      final EntityReferenceProcessingState fetchOwnerState = context.getOwnerProcessingState( fetch );
View Full Code Here

    if ( nature == AssociationAttributeDefinition.AssociationNature.ANY ) {
      return false;
    }

    if ( nature == AssociationAttributeDefinition.AssociationNature.ENTITY ) {
      EntityFetch fetch = currentSource.buildEntityFetch(
          attributeDefinition,
          fetchStrategy,
          this
      );
      pushToStack( (ExpandingFetchSource) fetch );
View Full Code Here

      ResultSet resultSet,
      ResultSetProcessingContextImpl context,
      EntityReferenceInitializer entityReferenceInitializer,
      Map<EntityReference,EntityReferenceInitializer> initializerByEntityReference) throws SQLException {
    final EntityReference entityReference = entityReferenceInitializer.getEntityReference();
    final EntityIdentifierDescription identifierDescription = entityReference.getIdentifierDescription();

    if ( identifierDescription.hasFetches() || identifierDescription.hasBidirectionalEntityReferences() ) {
      resolveEntityKey( resultSet, context, (FetchSource) identifierDescription, initializerByEntityReference );
    }
    entityReferenceInitializer.resolveEntityKey( resultSet, context );
  }
View Full Code Here

      throw new IllegalStateException( "QuerySpace with that UID was not yet registered in the AliasResolutionContext" );
    }

    final String[] aliasedLhsColumnNames = join.resolveAliasedLeftHandSideJoinConditionColumns( leftHandSideTableAlias );

    final EntityQuerySpace rightHandSide = (EntityQuerySpace) join.getRightHandSide();

    // see if there is already aliases registered for this entity query space (collection joins)
    EntityReferenceAliases aliases = aliasResolutionContext.resolveEntityReferenceAliases( rightHandSide.getUid() );
    if ( aliases == null ) {
        aliases = aliasResolutionContext.generateEntityReferenceAliases(
          rightHandSide.getUid(),
          rightHandSide.getEntityPersister()
      );
    }

    final String[] rhsColumnNames = join.resolveNonAliasedRightHandSideJoinConditionColumns();
    final String rhsTableAlias = aliases.getTableAlias();
    final AssociationType associationType = join instanceof JoinDefinedByMetadata ? ((JoinDefinedByMetadata)join).getJoinedAssociationPropertyType() : null;
    final String additionalJoinConditions = resolveAdditionalJoinCondition(
        rhsTableAlias,
        join.getAnyAdditionalJoinConditions( rhsTableAlias ),
        (Joinable) rightHandSide.getEntityPersister(),
        associationType
    );

    final Joinable joinable = (Joinable) rightHandSide.getEntityPersister();
    addJoins(
        joinFragment,
        joinable,
        join.isRightHandSideRequired() ? JoinType.INNER_JOIN : JoinType.LEFT_OUTER_JOIN,
        aliases.getTableAlias(),
View Full Code Here

      AliasResolutionContextImpl aliasResolutionContext,
      QueryBuildingParameters buildingParameters,
      SessionFactoryImplementor factory) {
    // Should be just one querySpace (of type EntityQuerySpace) in querySpaces.  Should we validate that?
    // Should we make it a util method on Helper like we do for extractRootReturn ?
    final EntityQuerySpace rootQuerySpace = Helper.INSTANCE.extractRootQuerySpace(
        querySpaces,
        EntityQuerySpace.class
    );

    final EntityReferenceAliases entityReferenceAliases = aliasResolutionContext.generateEntityReferenceAliases(
        rootQuerySpace.getUid(),
        rootQuerySpace.getEntityPersister()
    );

    final String rootTableAlias = entityReferenceAliases.getTableAlias();
    applyTableFragments(
        select,
        factory,
        buildingParameters,
        rootTableAlias,
        (OuterJoinLoadable) rootQuerySpace.getEntityPersister()
    );

    // add restrictions...
    // first, the load key restrictions (which entity(s) do we want to load?)
    applyKeyRestriction(
        select,
        entityReferenceAliases.getTableAlias(),
        keyColumnNamesToUse,
        buildingParameters.getBatchSize()
    );

    // don't quite remember why these 2 anymore, todo : research that and document this code or remove it etc..
    final OuterJoinLoadable rootLoadable = (OuterJoinLoadable) rootQuerySpace.getEntityPersister();
    final Queryable rootQueryable = (Queryable) rootQuerySpace.getEntityPersister();
    select.appendRestrictions(
        rootQueryable.filterFragment(
            entityReferenceAliases.getTableAlias(),
            Collections.emptyMap()
        )
View Full Code Here

    }
  }

  public String extractDetails(QuerySpace space) {
    if ( EntityQuerySpace.class.isInstance( space ) ) {
      final EntityQuerySpace entityQuerySpace = (EntityQuerySpace) space;
      return String.format(
          "%s(uid=%s, entity=%s)",
          entityQuerySpace.getClass().getSimpleName(),
          entityQuerySpace.getUid(),
          entityQuerySpace.getEntityPersister().getEntityName()
      );
    }
    else if ( CompositeQuerySpace.class.isInstance( space ) ) {
      final CompositeQuerySpace compositeQuerySpace = (CompositeQuerySpace) space;
      return String.format(
View Full Code Here

    // if the fetchSource is an entityReference, we should also walk its identifier fetches here...
    //
    // what if fetchSource is a composite fetch (as it would be in the case of a key-many-to-one)?
    if ( EntityReference.class.isInstance( fetchSource ) ) {
      final EntityReference fetchOwnerAsEntityReference = (EntityReference) fetchSource;
      if ( fetchOwnerAsEntityReference.getIdentifierDescription().hasFetches() ) {
        final FetchSource entityIdentifierAsFetchSource = (FetchSource) fetchOwnerAsEntityReference.getIdentifierDescription();
        for ( Fetch fetch : entityIdentifierAsFetchSource.getFetches() ) {
          processFetch(
              selectStatementBuilder,
              fetchSource,
              fetch,
View Full Code Here

  private void resolveEntityKey(
      ResultSet resultSet,
      ResultSetProcessingContextImpl context,
      EntityReferenceInitializer entityReferenceInitializer,
      Map<EntityReference,EntityReferenceInitializer> initializerByEntityReference) throws SQLException {
    final EntityReference entityReference = entityReferenceInitializer.getEntityReference();
    final EntityIdentifierDescription identifierDescription = entityReference.getIdentifierDescription();

    if ( identifierDescription.hasFetches() || identifierDescription.hasBidirectionalEntityReferences() ) {
      resolveEntityKey( resultSet, context, (FetchSource) identifierDescription, initializerByEntityReference );
    }
    entityReferenceInitializer.resolveEntityKey( resultSet, context );
View Full Code Here

TOP

Related Classes of org.hibernate.loader.plan2.exec.process.internal.EntityReferenceInitializerImpl

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.