Package org.hibernate.persister.entity

Examples of org.hibernate.persister.entity.Queryable


        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

  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, TypeFactory.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

      IdentNode ident = ( IdentNode ) constant;
      // Resolve to an identity column.
      ident.resolve(false, true);
    }
    else // IDENT might be the name of a class.
      Queryable queryable = walker.getSessionFactoryHelper().findQueryableUsingImports( constant.getText() );
      if ( isIdent && queryable != null ) {
        constant.setText( queryable.getDiscriminatorSQLValue() );
      }
      // Otherwise, it's a literal.
      else {
        processLiteral( constant );
      }
View Full Code Here

    }
  }

  public void lookupConstant(DotNode node) throws SemanticException {
    String text = ASTUtil.getPathText( node );
    Queryable persister = walker.getSessionFactoryHelper().findQueryableUsingImports( text );
    if ( persister != null ) {
      // the name of an entity class
      final String discrim = persister.getDiscriminatorSQLValue();
      node.setDataType( persister.getDiscriminatorType() );
      if ( InFragment.NULL.equals(discrim) || InFragment.NOT_NULL.equals(discrim) ) {
        throw new InvalidPathException( "subclass test not allowed for null or not null discriminator: '" + text + "'" );
      }
      else {
        setSQLValue( node, text, discrim ); //the class discriminator value
View Full Code Here

        if ( joinType != NONE ) throw new QueryException( "outer or full join must be followed by path expression" );

        if ( afterClass ) {
          // treat it as a classname
          Queryable p = q.getEntityPersisterUsingImports( token );
          if ( p == null ) throw new QueryException( "persister not found: " + token );
          q.addFromClass( alias, p );
        }
        else {
          // treat it as a path expression
          peParser.setJoinType( JoinFragment.INNER_JOIN );
          peParser.setUseThetaStyleJoin( true );
          ParserHelper.parse( peParser, q.unalias( token ), ParserHelper.PATH_SEPARATORS, q );
          if ( !peParser.isCollectionValued() ) throw new QueryException( "path expression did not resolve to collection: " + token );
          String nm = peParser.addFromCollection( q );
          q.setAliasName( alias, nm );
        }

        alias = null;
        afterIn = false;
        afterClass = false;
        expectingJoin = true;
      }
      else {

        // handle a path expression or class name that
        // appears at the start, in the "new" HQL
        // style or an alias that appears at the start
        // in the "old" HQL style

        Queryable p = q.getEntityPersisterUsingImports( token );
        if ( p != null ) {
          // starts with the name of a mapped class (new style)
          if ( joinType != NONE ) throw new QueryException( "outer or full join must be followed by path expression" );
          entityName = q.createNameFor( p.getEntityName() );
          q.addFromClass( entityName, p );
          expectingAs = true;
        }
        else if ( token.indexOf( '.' ) < 0 ) {
          // starts with an alias (old style)
View Full Code Here

  private FromElement createEntityAssociation(
          String role,
          String roleAlias,
          int joinType) throws SemanticException {
    FromElement elem;
    Queryable entityPersister = ( Queryable ) queryableCollection.getElementPersister();
    String associatedEntityName = entityPersister.getEntityName();
    // Get the class name of the associated entity.
    if ( queryableCollection.isOneToMany() ) {
      if ( log.isDebugEnabled() ) {
        log.debug( "createEntityAssociation() : One to many - path = " + path + " role = " + role + " associatedEntityName = " + associatedEntityName );
      }
View Full Code Here

  private int resolveAsNakedPropertyRef() {
    FromElement fromElement = locateSingleFromElement();
    if (fromElement == null) {
      return UNKNOWN;
    }
    Queryable persister = fromElement.getQueryable();
    if (persister == null) {
      return UNKNOWN;
    }
    Type propertyType = getNakedPropertyType(fromElement);
    if (propertyType == null) {
      // assume this ident's text does *not* refer to a property on the given persister
      return UNKNOWN;
    }

    if ((propertyType.isComponentType() || propertyType.isAssociationType() )) {
      return COMPONENT_REF;
    }

    setFromElement(fromElement);
    String property = getText();
    String[] columns = getWalker().isSelectStatement()
        ? persister.toColumns(fromElement.getTableAlias(), property)
        : persister.toColumns(property);
    String text = StringHelper.join(", ", columns);
    setText(columns.length == 1 ? text : "(" + text + ")");
    setType(SqlTokenTypes.SQL_TOKEN);

    // these pieces are needed for usage in select clause
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.