Package org.hibernate.loader.spi

Examples of org.hibernate.loader.spi.JoinableAssociation


   * Generate a sequence of <tt>LEFT OUTER JOIN</tt> clauses for the given associations.
   */
  protected final JoinFragment mergeOuterJoins(SessionFactoryImplementor factory, AliasResolutionContext aliasResolutionContext)
  throws MappingException {
    JoinFragment joinFragment = factory.getDialect().createOuterJoinFragment();
    JoinableAssociation previous = null;
    for ( JoinableAssociation association : associations ) {
      final String rhsAlias = aliasResolutionContext.resolveAssociationRhsTableAlias( association );
      final String[] aliasedLhsColumnNames = aliasResolutionContext.resolveAssociationAliasedLhsColumnNames(
          association
      );
      final String[] rhsColumnNames = JoinHelper.getRHSColumnNames( association.getAssociationType(), factory );
      final String on = resolveOnCondition( factory, association, aliasResolutionContext );
      if ( previous != null && previous.isManyToManyWith( association ) ) {
        addManyToManyJoin(
            joinFragment,
            association,
            ( QueryableCollection ) previous.getJoinable(),
            rhsAlias,
            aliasedLhsColumnNames,
            rhsColumnNames,
            on
        );
View Full Code Here


  protected static String orderBy(
      List<JoinableAssociation> associations,
      AliasResolutionContext aliasResolutionContext)
  throws MappingException {
    StringBuilder buf = new StringBuilder();
    JoinableAssociation previous = null;
    for ( JoinableAssociation association : associations ) {
      final String rhsAlias = aliasResolutionContext.resolveAssociationRhsTableAlias( association );
      if ( association.getJoinType() == JoinType.LEFT_OUTER_JOIN ) { // why does this matter?
        if ( association.getJoinable().isCollection() ) {
          final QueryableCollection queryableCollection = (QueryableCollection) association.getJoinable();
          if ( queryableCollection.hasOrdering() ) {
            final String orderByString = queryableCollection.getSQLOrderByString( rhsAlias );
            buf.append( orderByString ).append(", ");
          }
        }
        else {
          // it might still need to apply a collection ordering based on a
          // many-to-many defined order-by...
          if ( previous != null && previous.getJoinable().isCollection() ) {
            final QueryableCollection queryableCollection = (QueryableCollection) previous.getJoinable();
            if ( queryableCollection.isManyToMany() && previous.isManyToManyWith( association ) ) {
              if ( queryableCollection.hasManyToManyOrdering() ) {
                final String orderByString = queryableCollection.getManyToManyOrderByString( rhsAlias );
                buf.append( orderByString ).append(", ");
              }
            }
View Full Code Here

      return "";
    }
    else {
      StringBuilder buf = new StringBuilder( associations.size() * 100 );
      for ( int i=0; i<associations.size(); i++ ) {
        JoinableAssociation association = associations.get( i );
        JoinableAssociation next = ( i == associations.size() - 1 )
                ? null
                : associations.get( i + 1 );
        if ( !shouldAddToSql( association.getCurrentFetch() ) ) {
          continue;
        }

        final Joinable joinable = association.getJoinable();
        final EntityAliases currentEntityAliases =
            association.getCurrentEntityReference() == null ?
                null :
                aliasResolutionContext.resolveAliases( association.getCurrentEntityReference() ).getColumnAliases();
        final CollectionAliases currentCollectionAliases =
            association.getCurrentCollectionReference() == null ?
                null :
                aliasResolutionContext.resolveAliases( association.getCurrentCollectionReference() ).getCollectionColumnAliases();
        final String selectFragment = joinable.selectFragment(
            next == null ? null : next.getJoinable(),
            next == null ? null : aliasResolutionContext.resolveAssociationRhsTableAlias( next ),
            aliasResolutionContext.resolveAssociationRhsTableAlias( association ),
            currentEntityAliases == null ? null : currentEntityAliases.getSuffix(),
            currentCollectionAliases == null ? null : currentCollectionAliases.getSuffix(),
            association.getJoinType()==JoinType.LEFT_OUTER_JOIN
View Full Code Here

   * Generate a sequence of <tt>LEFT OUTER JOIN</tt> clauses for the given associations.
   */
  protected final JoinFragment mergeOuterJoins(SessionFactoryImplementor factory, LoadQueryAliasResolutionContext aliasResolutionContext)
  throws MappingException {
    JoinFragment joinFragment = factory.getDialect().createOuterJoinFragment();
    JoinableAssociation previous = null;
    for ( JoinableAssociation association : associations ) {
      final String rhsAlias = aliasResolutionContext.resolveAssociationRhsTableAlias( association );
      final String[] aliasedLhsColumnNames = aliasResolutionContext.resolveAssociationAliasedLhsColumnNames(
          association
      );
      final String[] rhsColumnNames = JoinHelper.getRHSColumnNames( association.getAssociationType(), factory );
      final String on = resolveOnCondition( factory, association, aliasResolutionContext );
      if ( previous != null && previous.isManyToManyWith( association ) ) {
        addManyToManyJoin(
            joinFragment,
            association,
            ( QueryableCollection ) previous.getJoinable(),
            rhsAlias,
            aliasedLhsColumnNames,
            rhsColumnNames,
            on
        );
View Full Code Here

  protected static String orderBy(
      List<JoinableAssociation> associations,
      LoadQueryAliasResolutionContext aliasResolutionContext)
  throws MappingException {
    StringBuilder buf = new StringBuilder();
    JoinableAssociation previous = null;
    for ( JoinableAssociation association : associations ) {
      final String rhsAlias = aliasResolutionContext.resolveAssociationRhsTableAlias( association );
      if ( association.getJoinType() == JoinType.LEFT_OUTER_JOIN ) { // why does this matter?
        if ( association.getJoinable().isCollection() ) {
          final QueryableCollection queryableCollection = (QueryableCollection) association.getJoinable();
          if ( queryableCollection.hasOrdering() ) {
            final String orderByString = queryableCollection.getSQLOrderByString( rhsAlias );
            buf.append( orderByString ).append(", ");
          }
        }
        else {
          // it might still need to apply a collection ordering based on a
          // many-to-many defined order-by...
          if ( previous != null && previous.getJoinable().isCollection() ) {
            final QueryableCollection queryableCollection = (QueryableCollection) previous.getJoinable();
            if ( queryableCollection.isManyToMany() && previous.isManyToManyWith( association ) ) {
              if ( queryableCollection.hasManyToManyOrdering() ) {
                final String orderByString = queryableCollection.getManyToManyOrderByString( rhsAlias );
                buf.append( orderByString ).append(", ");
              }
            }
View Full Code Here

      return "";
    }
    else {
      StringBuilder buf = new StringBuilder( associations.size() * 100 );
      for ( int i=0; i<associations.size(); i++ ) {
        JoinableAssociation association = associations.get( i );
        JoinableAssociation next = ( i == associations.size() - 1 )
                ? null
                : associations.get( i + 1 );
        final Joinable joinable = association.getJoinable();
        final EntityAliases currentEntityAliases =
            association.getCurrentEntityReference() == null ?
                null :
                aliasResolutionContext.resolveEntityColumnAliases( association.getCurrentEntityReference() );
        final CollectionAliases currentCollectionAliases =
            association.getCurrentCollectionReference() == null ?
                null :
                aliasResolutionContext.resolveCollectionColumnAliases( association.getCurrentCollectionReference() );
        final String selectFragment = joinable.selectFragment(
            next == null ? null : next.getJoinable(),
            next == null ? null : aliasResolutionContext.resolveAssociationRhsTableAlias( next ),
            aliasResolutionContext.resolveAssociationRhsTableAlias( association ),
            currentEntityAliases == null ? null : currentEntityAliases.getSuffix(),
            currentCollectionAliases == null ? null : currentCollectionAliases.getSuffix(),
            association.getJoinType()==JoinType.LEFT_OUTER_JOIN
View Full Code Here

TOP

Related Classes of org.hibernate.loader.spi.JoinableAssociation

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.