Package org.hibernate.persister.entity

Examples of org.hibernate.persister.entity.Joinable


      if (includeExtraJoins) { //TODO: not quite sure about the full implications of this!
        addExtraJoins( joinFragment, rootAlias, rootJoinable, true );
      }
    }

    Joinable last = rootJoinable;

    for ( int i = 0; i < joins.size(); i++ ) {
      Join join = ( Join ) joins.get( i );
      String on = join.getAssociationType().getOnCondition( join.getAlias(), factory, enabledFilters );
      String condition = null;
View Full Code Here


    }
    element.initializeEntity( fromClause, className, entityPersister, type, classAlias, tableAlias );
  }

  private FromElement createFromElement(EntityPersister entityPersister) {
    Joinable joinable = ( Joinable ) entityPersister;
    String text = joinable.getTableName();
    AST ast = createFromElement( text );
    FromElement element = ( FromElement ) ast;
    return element;
  }
View Full Code Here

      final String alias,
      final PropertyPath path,
      final int currentDepth,
      final int joinType) throws MappingException {

    Joinable joinable = type.getAssociatedJoinable( getFactory() );

    // important to generate alias based on size of association collection
    // *before* adding this join to that collection
    String subalias = generateTableAlias( associations.size() + 1, path, joinable );

    // NOTE : it should be fine to continue to pass only filters below
    // (instead of LoadQueryInfluencers) since "from that point on" we
    // only need to worry about restrictions (and not say adding more
    // joins)
    OuterJoinableAssociation assoc = new OuterJoinableAssociation(
        path,
        type,
        alias,
        aliasedLhsColumns,
        subalias,
        joinType,
        getWithClause(path),
        hasRestriction( path ),
        getFactory(),
        loadQueryInfluencers.getEnabledFilters()
    );
    assoc.validateJoin( path.getFullPath() );
    associations.add( assoc );

    int nextDepth = currentDepth + 1;
//    path = "";
    if ( !joinable.isCollection() ) {
      if (joinable instanceof OuterJoinLoadable) {
        walkEntityTree(
          (OuterJoinLoadable) joinable,
          subalias,
          path,
View Full Code Here

      for ( int i=0; i<associations.size(); i++ ) {
        OuterJoinableAssociation join = (OuterJoinableAssociation) associations.get(i);
        OuterJoinableAssociation next = (i == associations.size() - 1)
                ? null
                : ( OuterJoinableAssociation ) associations.get( i + 1 );
        final Joinable joinable = join.getJoinable();
        final String entitySuffix = ( suffixes == null || entityAliasCount >= suffixes.length )
                ? null
                : suffixes[entityAliasCount];
        final String collectionSuffix = ( collectionSuffixes == null || collectionAliasCount >= collectionSuffixes.length )
                ? null
                : collectionSuffixes[collectionAliasCount];
        final String selectFragment = joinable.selectFragment(
            next == null ? null : next.getJoinable(),
            next == null ? null : next.getRHSAlias(),
            join.getRHSAlias(),
            entitySuffix,
                collectionSuffix,
            join.getJoinType()==JoinFragment.LEFT_OUTER_JOIN
        );
        if (selectFragment.trim().length() > 0) {
          buf.append(", ").append(selectFragment);
        }
        if ( joinable.consumesEntityAlias() ) entityAliasCount++;
        if ( joinable.consumesCollectionAlias() && join.getJoinType()==JoinFragment.LEFT_OUTER_JOIN ) collectionAliasCount++;
      }
      return buf.toString();
    }
  }
View Full Code Here

      if (includeExtraJoins) { //TODO: not quite sure about the full implications of this!
        addExtraJoins( joinFragment, rootAlias, rootJoinable, true );
      }
    }

    Joinable last = rootJoinable;

    for ( Join join: joins ) {
      String on = join.getAssociationType().getOnCondition( join.getAlias(), factory, enabledFilters );
      String condition = null;
      if ( last != null &&
View Full Code Here

    }
    element.initializeEntity( fromClause, className, entityPersister, type, classAlias, tableAlias );
  }

  private FromElement createFromElement(EntityPersister entityPersister) {
    Joinable joinable = ( Joinable ) entityPersister;
    String text = joinable.getTableName();
    AST ast = createFromElement( text );
    FromElement element = ( FromElement ) ast;
    return element;
  }
View Full Code Here

    final EntityReturnImpl entityReturn = new EntityReturnImpl( entityDefinition, querySpaces );
    addRootReturn( entityReturn );
    pushToStack( entityReturn );

    // also add an AssociationKey for the root so we can later on recognize circular references back to the root.
    final Joinable entityPersister = (Joinable) entityDefinition.getEntityPersister();
    associationKeyRegistered(
        new AssociationKey( entityPersister.getTableName(), entityPersister.getKeyColumnNames() )
    );
  }
View Full Code Here

    final AssociationKey associationKey = attributeDefinition.getAssociationKey();

    // go ahead and build the bidirectional fetch
    if ( attributeDefinition.getAssociationNature() == AssociationAttributeDefinition.AssociationNature.ENTITY ) {
      final Joinable currentEntityPersister = (Joinable) currentSource().resolveEntityReference().getEntityPersister();
      final AssociationKey currentEntityReferenceAssociationKey =
          new AssociationKey( currentEntityPersister.getTableName(), currentEntityPersister.getKeyColumnNames() );
      // if associationKey is equal to currentEntityReferenceAssociationKey
      // that means that the current EntityPersister has a single primary key attribute
      // (i.e., derived attribute) which is mapped by attributeDefinition.
      // This is not a bidirectional association.
      // TODO: AFAICT, to avoid an overflow, the associated entity must already be loaded into the session, or
View Full Code Here

        )
    );
  }

  protected void applyRootReturnWhereJoinRestrictions(SelectStatementBuilder selectStatementBuilder) {
    final Joinable joinable = (OuterJoinLoadable) getRootEntityReturn().getEntityPersister();
    selectStatementBuilder.appendRestrictions(
        joinable.whereJoinFragment(
            entityReferenceAliases.getTableAlias(),
            true,
            true
        )
    );
View Full Code Here

            if ( type.isAssociationType() ) {
              // we build the association-key here because of the "goofiness" with 'currentColumnPosition'
              final AssociationKey associationKey;
              final AssociationType aType = (AssociationType) type;
              final Joinable joinable = aType.getAssociatedJoinable( sessionFactory() );

              if ( aType.isAnyType() ) {
                associationKey = new AssociationKey(
                    JoinHelper.getLHSTableName(
                        aType,
                        attributeNumber(),
                        (OuterJoinLoadable) locateOwningPersister()
                    ),
                    JoinHelper.getLHSColumnNames(
                        aType,
                        attributeNumber(),
                        columnPosition,
                        (OuterJoinLoadable) locateOwningPersister(),
                        sessionFactory()
                    )
                );
              }
              else if ( aType.getForeignKeyDirection() == ForeignKeyDirection.FOREIGN_KEY_FROM_PARENT ) {
                final String lhsTableName;
                final String[] lhsColumnNames;

                if ( joinable.isCollection() ) {
                  final QueryableCollection collectionPersister = (QueryableCollection) joinable;
                  lhsTableName = collectionPersister.getTableName();
                  lhsColumnNames = collectionPersister.getElementColumnNames();
                }
                else {
                  final OuterJoinLoadable entityPersister = (OuterJoinLoadable) locateOwningPersister();
                  lhsTableName = getLHSTableName( aType, attributeNumber(), entityPersister );
                  lhsColumnNames = getLHSColumnNames(
                      aType,
                      attributeNumber(),
                      columnPosition,
                      entityPersister,
                      sessionFactory()
                  );
                }
                associationKey = new AssociationKey( lhsTableName, lhsColumnNames );
              }
              else {
                associationKey = new AssociationKey(
                    joinable.getTableName(),
                    getRHSColumnNames( aType, sessionFactory() )
                );
              }

              final CompositeType cType = getType();
View Full Code Here

TOP

Related Classes of org.hibernate.persister.entity.Joinable

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.