Package org.hibernate.persister.entity

Examples of org.hibernate.persister.entity.Joinable


              sessionFactory()
          )
      );
    }

    final Joinable joinable = type.getAssociatedJoinable( sessionFactory() );

    if ( type.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) source();
        lhsTableName = getLHSTableName( type, attributeNumber(), entityPersister );
        lhsColumnNames = getLHSColumnNames( type, attributeNumber(), entityPersister, sessionFactory() );
      }
      return new AssociationKey( lhsTableName, lhsColumnNames );
    }
    else {
      return new AssociationKey( joinable.getTableName(), getRHSColumnNames( type, sessionFactory() ) );
    }
  }
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

    if ( subgraphMap == null ) {
      subgraphMap = new HashMap<Class, Subgraph>();
    }

    final AssociationType attributeType = (AssociationType) Helper.resolveType( sessionFactory(), attribute );
    final Joinable joinable = attributeType.getAssociatedJoinable( sessionFactory() );

    if ( joinable.isCollection() ) {
      final EntityPersister elementEntityPersister = ( (QueryableCollection) joinable ).getElementPersister();
      if ( type == null ) {
        type = elementEntityPersister.getMappedClass();
      }
      else  {
View Full Code Here

      return joinSequence;
    }

    // Class names in the FROM clause result in a JoinSequence (the old FromParser does this).
    if ( persister instanceof Joinable ) {
      Joinable joinable = ( Joinable ) persister;
      return fromElement.getSessionFactoryHelper().createJoinSequence().setRoot( joinable, getTableAlias() );
    }
    else {
      return null// TODO: Should this really return null?  If not, figure out something better to do here.
    }
View Full Code Here

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

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

    String subalias = generateTableAlias(
        associations.size()+1, //before adding to collection!
        path,
        joinable
      );

    OuterJoinableAssociation assoc = new OuterJoinableAssociation(
        type,
        alias,
        aliasedLhsColumns,
        subalias,
        joinType,
        getFactory(),
        enabledFilters
      );
    assoc.validateJoin(path);
    associations.add(assoc);

    int nextDepth = currentDepth+1;
    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
        );
        buf.append(selectFragment);
        if ( joinable.consumesEntityAlias() ) entityAliasCount++;
        if ( joinable.consumesCollectionAlias() && join.getJoinType()==JoinFragment.LEFT_OUTER_JOIN ) collectionAliasCount++;
        if (
          i<associations.size()-1 &&
          selectFragment.trim().length()>0
        ) {
          buf.append(", ");
View Full Code Here

   * Get the columns of the associated table which are to
   * be used in the join
   */
  public static String[] getRHSColumnNames(AssociationType type, SessionFactoryImplementor factory) {
    String uniqueKeyPropertyName = type.getRHSUniqueKeyPropertyName();
    Joinable joinable = type.getAssociatedJoinable(factory);
    if (uniqueKeyPropertyName==null) {
      return joinable.getKeyColumnNames();
    }
    else {
      return ( (OuterJoinLoadable) joinable ).getPropertyColumnNames(uniqueKeyPropertyName);
    }
  }
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 ( 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

   * Get the columns of the associated table which are to
   * be used in the join
   */
  public static String[] getRHSColumnNames(AssociationType type, SessionFactoryImplementor factory) {
    String uniqueKeyPropertyName = type.getRHSUniqueKeyPropertyName();
    Joinable joinable = type.getAssociatedJoinable(factory);
    if (uniqueKeyPropertyName==null) {
      return joinable.getKeyColumnNames();
    }
    else {
      return ( (OuterJoinLoadable) joinable ).getPropertyColumnNames(uniqueKeyPropertyName);
    }
  }
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 ( 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

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.