Package org.hibernate.persister.entity

Examples of org.hibernate.persister.entity.Queryable


  private StatementExecutor buildAppropriateStatementExecutor(HqlSqlWalker walker) {
    final Statement statement = (Statement) walker.getAST();
    if ( walker.getStatementType() == HqlSqlTokenTypes.DELETE ) {
      final FromElement fromElement = walker.getFinalFromClause().getFromElement();
      final Queryable persister = fromElement.getQueryable();
      if ( persister.isMultiTable() ) {
        return new MultiTableDeleteExecutor( walker );
      }
      else {
        return new DeleteExecutor( walker, persister );
      }
    }
    else if ( walker.getStatementType() == HqlSqlTokenTypes.UPDATE ) {
      final FromElement fromElement = walker.getFinalFromClause().getFromElement();
      final Queryable persister = fromElement.getQueryable();
      if ( persister.isMultiTable() ) {
        // even here, if only properties mapped to the "base table" are referenced
        // in the set and where clauses, this could be handled by the BasicDelegate.
        // TODO : decide if it is better performance-wise to doAfterTransactionCompletion that check, or to simply use the MultiTableUpdateDelegate
        return new MultiTableUpdateExecutor( walker );
      }
View Full Code Here


        throw new QueryException( "alias not found: " + name );
      }
      return getCollectionPersister( role ); //.getElementPropertyMapping();
    }
    else {
      Queryable persister = getEntityPersister( type );
      if ( persister == null ) throw new QueryException( "persistent class not found: " + type );
      return persister;
    }
  }
View Full Code Here

    decoratedPropertyMappings.put( name, mapping );
  }

  private Queryable getEntityPersisterForName(String name) throws QueryException {
    String type = getType( name );
    Queryable persister = getEntityPersister( type );
    if ( persister == null ) throw new QueryException( "persistent class not found: " + type );
    return persister;
  }
View Full Code Here

      CollectionPersister p = getCollectionPersister( ( String ) iter.next() );
      addQuerySpaces( p.getCollectionSpaces() );
    }
    iter = typeMap.keySet().iterator();
    while ( iter.hasNext() ) {
      Queryable p = getEntityPersisterForName( ( String ) iter.next() );
      addQuerySpaces( p.getQuerySpaces() );
    }

    sqlString = sql.toQueryString();

    if ( holderClass != null ) holderConstructor = ReflectHelper.getConstructor( holderClass, returnTypes );
View Full Code Here

      if ( isFromElementUpdateOrDeleteRoot( lhsFromElement ) ) {
        // at this point we know we have the 2 conditions above,
        // lets see if we have the mentioned "multi-table" caveat...
        boolean useAlias = false;
        if ( getWalker().getStatementType() != SqlTokenTypes.INSERT ) {
          final Queryable persister = lhsFromElement.getQueryable();
          if ( persister.isMultiTable() ) {
            useAlias = true;
          }
        }
        if ( !useAlias ) {
          final String lhsTableName = lhsFromElement.getQueryable().getTableName();
View Full Code Here

    ArrayList<String> results = new ArrayList<String>();
    for ( EntityPersister checkPersister : entityPersisters.values() ) {
      if ( ! Queryable.class.isInstance( checkPersister ) ) {
        continue;
      }
      final Queryable checkQueryable = Queryable.class.cast( checkPersister );
      final String checkQueryableEntityName = checkQueryable.getEntityName();
      final boolean isMappedClass = className.equals( checkQueryableEntityName );
      if ( checkQueryable.isExplicitPolymorphism() ) {
        if ( isMappedClass ) {
          return new String[] { className }; //NOTE EARLY EXIT
        }
      }
      else {
        if ( isMappedClass ) {
          results.add( checkQueryableEntityName );
        }
        else {
          final Class mappedClass = checkQueryable.getMappedClass();
          if ( mappedClass != null && clazz.isAssignableFrom( mappedClass ) ) {
            final boolean assignableSuperclass;
            if ( checkQueryable.isInherited() ) {
              Class mappedSuperclass = getEntityPersister( checkQueryable.getMappedSuperclass() ).getMappedClass();
              assignableSuperclass = clazz.isAssignableFrom( mappedSuperclass );
            }
            else {
              assignableSuperclass = false;
            }
View Full Code Here

    AliasGenerator aliasGenerator = new LocalAliasGenerator( 0 );
    appendSelectExpressions( collectionPersister.getIndexColumnNames(), selections, aliasGenerator );
    Type keyType = collectionPersister.getIndexType();
    if ( keyType.isAssociationType() ) {
      EntityType entityType = (EntityType) keyType;
      Queryable keyEntityPersister = (Queryable) sfi().getEntityPersister(
          entityType.getAssociatedEntityName( sfi() )
      );
      SelectFragment fragment = keyEntityPersister.propertySelectFragmentFragment(
          collectionTableAlias(),
          null,
          false
      );
      appendSelectExpressions( fragment, selections, aliasGenerator );
View Full Code Here

    AliasGenerator aliasGenerator = new LocalAliasGenerator( 1 );
    appendSelectExpressions( collectionPersister.getElementColumnNames(), selections, aliasGenerator );
    Type valueType = collectionPersister.getElementType();
    if ( valueType.isAssociationType() ) {
      EntityType valueEntityType = (EntityType) valueType;
      Queryable valueEntityPersister = (Queryable) sfi().getEntityPersister(
          valueEntityType.getAssociatedEntityName( sfi() )
      );
      SelectFragment fragment = valueEntityPersister.propertySelectFragmentFragment(
          elementTableAlias(),
          null,
          false
      );
      appendSelectExpressions( fragment, selections, aliasGenerator );
View Full Code Here

  String continueFromManyToMany(String entityName, String[] joinColumns, QueryTranslatorImpl q) throws QueryException {
    start( q );
    continuation = true;
    currentName = q.createNameFor( entityName );
    q.addType( currentName, entityName );
    Queryable classPersister = q.getEntityPersister( entityName );
    //QueryJoinFragment join = q.createJoinFragment(useThetaStyleJoin);
    addJoin( currentName, q.getFactory().getTypeResolver().getTypeFactory().manyToOne( entityName ), joinColumns );
    currentPropertyMapping = classPersister;
    return currentName;
  }
View Full Code Here

    }

    if ( collectionElementType.isEntityType() ) {
      // an association
      QueryableCollection collectionPersister = q.getCollectionPersister( collectionRole );
      Queryable entityPersister = ( Queryable ) collectionPersister.getElementPersister();
      String clazz = entityPersister.getEntityName();

      final String elementName;
      if ( collectionPersister.isOneToMany() ) {
        elementName = collectionName;
        //allow index() function:
View Full Code Here

TOP

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

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.