Package org.hibernate.type

Examples of org.hibernate.type.CollectionType


    if (!getDataType().isCollectionType()) {
      throw new SemanticException("Collection expected; [" + propertyName + "] does not refer to a collection property");
    }

    // TODO : most of below was taken verbatim from DotNode; should either delegate this logic or super-type it
    CollectionType type = (CollectionType) getDataType();
    String role = type.getRole();
    QueryableCollection queryableCollection = getSessionFactoryHelper().requireQueryableCollection(role);

    String alias = null// DotNode uses null here...
    String columnTableAlias = getFromElement().getTableAlias();
    int joinType = JoinFragment.INNER_JOIN;
View Full Code Here


      }
     
      // If many-to-many, delete the FK row in the collection table.
      for ( Type type : persister.getPropertyTypes() ) {
        if ( type.isCollectionType() ) {
          final CollectionType cType = (CollectionType) type;
          final AbstractCollectionPersister cPersister = (AbstractCollectionPersister) factory
              .getCollectionPersister( cType.getRole() );
          if ( cPersister.isManyToMany() ) {
            if (persister.getIdentifierColumnNames().length > 1
                && !dialect.supportsTuplesInSubqueries()) {
              LOG.warn( "This dialect is unable to cascade the delete into the many-to-many join table" +
                  " when the entity has multiple primary keys.  Either properly setup cascading on" +
View Full Code Here

      return checkComponentNullability( value, (CompositeType) propertyType );
    }
    else if ( propertyType.isCollectionType() ) {

      //persistent collections may have components
      CollectionType collectionType = (CollectionType) propertyType;
      Type collectionElementType = collectionType.getElementType( session.getFactory() );
      if ( collectionElementType.isComponentType() ) {
        //check for all components values in the collection

        CompositeType componentType = (CompositeType) collectionElementType;
        Iterator iter = CascadingAction.getLoadedElementsIterator(session, collectionType, value);
View Full Code Here

      parameterSpecifications = gen.getCollectedParameters();
     
      // If many-to-many, delete the FK row in the collection table.
      for ( Type type : persister.getPropertyTypes() ) {
        if ( type.isCollectionType() ) {
          final CollectionType cType = (CollectionType) type;
          final AbstractCollectionPersister cPersister = (AbstractCollectionPersister) factory
              .getCollectionPersister( cType.getRole() );
          if ( cPersister.isManyToMany() ) {
            if (persister.getIdentifierColumnNames().length > 1
                && !dialect.supportsTuplesInSubqueries()) {
              LOG.warn( "This dialect is unable to cascade the delete into the many-to-many join table" +
                  " when the entity has multiple primary keys.  Either properly setup cascading on" +
View Full Code Here

      return checkComponentNullability( value, (CompositeType) propertyType );
    }
    else if ( propertyType.isCollectionType() ) {

      //persistent collections may have components
      CollectionType collectionType = (CollectionType) propertyType;
      Type collectionElementType = collectionType.getElementType( session.getFactory() );
      if ( collectionElementType.isComponentType() ) {
        //check for all components values in the collection

        CompositeType componentType = (CompositeType) collectionElementType;
        Iterator iter = CascadingAction.getLoadedElementsIterator(session, collectionType, value);
View Full Code Here

  }

  private void addAssociationsToTheSetForOneProperty(String name, Type type, String prefix, SessionFactoryImplementor factory) {

    if ( type.isCollectionType() ) {
      CollectionType collType = (CollectionType) type;
      Type assocType = collType.getElementType( factory );
      addAssociationsToTheSetForOneProperty(name, assocType, prefix, factory);
    }
    //ToOne association
    else if ( type.isEntityType() || type.isAnyType() ) {
      associations.add( prefix + name );
View Full Code Here

        return null;
      }
      return getEntity( session.generateEntityKey( owenerId, ownerPersister ) );
    }

    final CollectionType collectionType = collectionPersister.getCollectionType();

    //    2) The incoming key is most likely the collection key which we need to resolve to the owner key
    //      find the corresponding owner instance
    //      a) try by EntityUniqueKey
    if ( collectionType.getLHSPropertyName() != null ) {
      Object owner = getEntity(
          new EntityUniqueKey(
              ownerPersister.getEntityName(),
              collectionType.getLHSPropertyName(),
              key,
              collectionPersister.getKeyType(),
              ownerPersister.getEntityMode(),
              session.getFactory()
          )
      );
      if ( owner != null ) {
        return owner;
      }

      //    b) try by EntityKey, which means we need to resolve owner-key -> collection-key
      //      IMPL NOTE : yes if we get here this impl is very non-performant, but PersistenceContext
      //          was never designed to handle this case; adding that capability for real means splitting
      //          the notions of:
      //            1) collection key
      //            2) collection owner key
      //           these 2 are not always the same (same is true in the case of ToOne associations with
      //           property-ref).  That would require changes to (at least) CollectionEntry and quite
      //          probably changes to how the sql for collection initializers are generated
      //
      //      We could also possibly see if the referenced property is a natural id since we already have caching
      //      in place of natural id snapshots.  BUt really its better to just do it the right way ^^ if we start
      //       going that route
      final Serializable ownerId = ownerPersister.getIdByUniqueKey( key, collectionType.getLHSPropertyName(), session );
      return getEntity( session.generateEntityKey( ownerId, ownerPersister ) );
    }

    // as a last resort this is what the old code did...
    return getEntity( session.generateEntityKey( key, collectionPersister.getOwnerEntityPersister() ) );
View Full Code Here

    if (!getDataType().isCollectionType()) {
      throw new SemanticException("Collection expected; [" + propertyName + "] does not refer to a collection property");
    }

    // TODO : most of below was taken verbatim from DotNode; should either delegate this logic or super-type it
    CollectionType type = (CollectionType) getDataType();
    String role = type.getRole();
    QueryableCollection queryableCollection = getSessionFactoryHelper().requireQueryableCollection(role);

    String alias = null// DotNode uses null here...
    String columnTableAlias = getFromElement().getTableAlias();
    JoinType joinType = JoinType.INNER_JOIN;
View Full Code Here

        return null;
      }
      return getEntity( session.generateEntityKey( owenerId, ownerPersister ) );
    }

    final CollectionType collectionType = collectionPersister.getCollectionType();

    //    2) The incoming key is most likely the collection key which we need to resolve to the owner key
    //      find the corresponding owner instance
    //      a) try by EntityUniqueKey
    if ( collectionType.getLHSPropertyName() != null ) {
      Object owner = getEntity(
          new EntityUniqueKey(
              ownerPersister.getEntityName(),
              collectionType.getLHSPropertyName(),
              key,
              collectionPersister.getKeyType(),
              ownerPersister.getEntityMode(),
              session.getFactory()
          )
      );
      if ( owner != null ) {
        return owner;
      }

      //    b) try by EntityKey, which means we need to resolve owner-key -> collection-key
      //      IMPL NOTE : yes if we get here this impl is very non-performant, but PersistenceContext
      //          was never designed to handle this case; adding that capability for real means splitting
      //          the notions of:
      //            1) collection key
      //            2) collection owner key
      //           these 2 are not always the same (same is true in the case of ToOne associations with
      //           property-ref).  That would require changes to (at least) CollectionEntry and quite
      //          probably changes to how the sql for collection initializers are generated
      //
      //      We could also possibly see if the referenced property is a natural id since we already have caching
      //      in place of natural id snapshots.  BUt really its better to just do it the right way ^^ if we start
      //       going that route
      final Serializable ownerId = ownerPersister.getIdByUniqueKey( key, collectionType.getLHSPropertyName(), session );
      return getEntity( session.generateEntityKey( ownerId, ownerPersister ) );
    }

    // as a last resort this is what the old code did...
    return getEntity( session.generateEntityKey( key, collectionPersister.getOwnerEntityPersister() ) );
View Full Code Here

      componentPath += tokens.nextToken();
      Type type = provider.getType( componentPath );
      if ( type.isAssociationType() ) {
        // CollectionTypes are always also AssociationTypes - but there's not always an associated entity...
        AssociationType atype = ( AssociationType ) type;
        CollectionType ctype = type.isCollectionType() ? (CollectionType)type : null;
        Type elementType = (ctype != null) ? ctype.getElementType( sessionFactory ) : null;
        // is the association a collection of components or value-types? (i.e a colloction of valued types?)
        if ( ctype != null  && elementType.isComponentType() ) {
          provider = new ComponentCollectionCriteriaInfoProvider( helper.getCollectionPersister(ctype.getRole()) );
        }
        else if ( ctype != null && !elementType.isEntityType() ) {
          provider = new ScalarCollectionCriteriaInfoProvider( helper, ctype.getRole() );
        }
        else {
          provider = new EntityCriteriaInfoProvider(( Queryable ) sessionFactory.getEntityPersister(
                        atype.getAssociatedEntityName( sessionFactory )
                        ));
View Full Code Here

TOP

Related Classes of org.hibernate.type.CollectionType

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.