Package org.hibernate.mapping

Examples of org.hibernate.mapping.Collection


      if ( propertyRef != null ) {
        mappings.addUniquePropertyReference( toOne.getReferencedEntityName(), propertyRef );
      }
    }
    else if ( value instanceof Collection ) {
      Collection coll = (Collection) value;
      String propertyRef = coll.getReferencedPropertyName();
      // not necessarily a *unique* property reference
      if ( propertyRef != null ) {
        mappings.addPropertyReference( coll.getOwnerEntityName(), propertyRef );
      }
    }

    value.createForeignKey();
    Property prop = new Property();
View Full Code Here


        );
      }
      else {
        // collection
        if ( value instanceof Collection ) {
          final Collection collValue = (Collection) value;
          final Value elementValue = collValue.getElement();
          final org.hibernate.type.Type elementType = elementValue.getType();

          // First, determine the type of the elements and use that to help determine the
          //     collection type)
          final Attribute.PersistentAttributeType elementPersistentAttributeType;
View Full Code Here

        ib.setValue( list.getIndex() );
        referenced.addProperty( ib );
      }
    }
    else {
      Collection coll = this.collection;
      throw new AnnotationException(
          "List/array has to be annotated with an @OrderColumn (or @IndexColumn): "
              + coll.getRole()
      );
    }
  }
View Full Code Here

      LOG.debugf( "Retrieving property %s.%s", associatedClass.getEntityName(), mappedByProperty );

      final Property property = associatedClass.getRecursiveProperty( columns[0].getMappedBy() );
      Iterator mappedByColumns;
      if ( property.getValue() instanceof Collection ) {
        Collection collection = ( (Collection) property.getValue() );
        Value element = collection.getElement();
        if ( element == null ) {
          throw new AnnotationException(
              "Illegal use of mappedBy on both sides of the relationship: "
                  + associatedClass.getEntityName() + "." + mappedByProperty
          );
        }
        mappedByColumns = element.getColumnIterator();
      }
      else {
        mappedByColumns = property.getValue().getColumnIterator();
      }
      while ( mappedByColumns.hasNext() ) {
        Column column = (Column) mappedByColumns.next();
        columns[0].overrideFromReferencedColumnIfNecessary( column );
        columns[0].linkValueUsingAColumnCopy( column, value );
      }
    }
    else if ( columns[0].isImplicit() ) {
      /**
       * if columns are implicit, then create the columns based on the
       * referenced entity id columns
       */
      Iterator idColumns;
      if ( referencedEntity instanceof JoinedSubclass ) {
        idColumns = referencedEntity.getKey().getColumnIterator();
      }
      else {
        idColumns = referencedEntity.getIdentifier().getColumnIterator();
      }
      while ( idColumns.hasNext() ) {
        Column column = (Column) idColumns.next();
        columns[0].overrideFromReferencedColumnIfNecessary( column );
        columns[0].linkValueUsingDefaultColumnNaming( column, referencedEntity, value );
      }
    }
    else {
      int fkEnum = Ejb3JoinColumn.checkReferencedColumnsType( columns, referencedEntity, mappings );

      if ( Ejb3JoinColumn.NON_PK_REFERENCE == fkEnum ) {
        String referencedPropertyName;
        if ( value instanceof ToOne ) {
          referencedPropertyName = ( (ToOne) value ).getReferencedPropertyName();
        }
        else if ( value instanceof DependantValue ) {
          String propertyName = columns[0].getPropertyName();
          if ( propertyName != null ) {
            Collection collection = (Collection) referencedEntity.getRecursiveProperty( propertyName )
                .getValue();
            referencedPropertyName = collection.getReferencedPropertyName();
          }
          else {
            throw new AnnotationException( "SecondaryTable JoinColumn cannot reference a non primary key" );
          }

View Full Code Here

            determineSingularAssociationAttributeType( member )
        );
      }
            // collection
            if (value instanceof Collection) {
                final Collection collValue = (Collection)value;
                final Value elementValue = collValue.getElement();
                final org.hibernate.type.Type elementType = elementValue.getType();

                // First, determine the type of the elements and use that to help determine the
                // collection type)
                final Attribute.PersistentAttributeType elementPersistentAttributeType;
View Full Code Here

  public void setCollectionCacheConcurrencyStrategy(String collectionRole, String concurrencyStrategy, String region) {
    caches.add( new CacheHolder( collectionRole, concurrencyStrategy, region, false, false ) );
  }

  private void applyCollectionCacheConcurrencyStrategy(CacheHolder holder) {
    Collection collection = getCollectionMapping( holder.role );
    if ( collection == null ) {
      throw new MappingException( "Cannot cache an unknown collection: " + holder.role );
    }
    collection.setCacheConcurrencyStrategy( holder.usage );
    collection.setCacheRegionName( holder.region );
  }
View Full Code Here

            determineSingularAssociationAttributeType( member )
        );
      }
      // collection
      if ( value instanceof Collection ) {
        final Collection collValue = (Collection) value;
        final Value elementValue = collValue.getElement();
        final org.hibernate.type.Type elementType = elementValue.getType();

        // First, determine the type of the elements and use that to help determine the
        // collection type)
        final Attribute.PersistentAttributeType elementPersistentAttributeType;
View Full Code Here

      LOG.debugf( "Retrieving property %s.%s", associatedClass.getEntityName(), mappedByProperty );

      final Property property = associatedClass.getRecursiveProperty( columns[0].getMappedBy() );
      Iterator mappedByColumns;
      if ( property.getValue() instanceof Collection ) {
        Collection collection = ( (Collection) property.getValue() );
        Value element = collection.getElement();
        if ( element == null ) {
          throw new AnnotationException(
              "Illegal use of mappedBy on both sides of the relationship: "
                  + associatedClass.getEntityName() + "." + mappedByProperty
          );
        }
        mappedByColumns = element.getColumnIterator();
      }
      else {
        mappedByColumns = property.getValue().getColumnIterator();
      }
      while ( mappedByColumns.hasNext() ) {
        Column column = (Column) mappedByColumns.next();
        columns[0].overrideFromReferencedColumnIfNecessary( column );
        columns[0].linkValueUsingAColumnCopy( column, value );
      }
    }
    else if ( columns[0].isImplicit() ) {
      /**
       * if columns are implicit, then create the columns based on the
       * referenced entity id columns
       */
      Iterator idColumns;
      if ( referencedEntity instanceof JoinedSubclass ) {
        idColumns = referencedEntity.getKey().getColumnIterator();
      }
      else {
        idColumns = referencedEntity.getIdentifier().getColumnIterator();
      }
      while ( idColumns.hasNext() ) {
        Column column = (Column) idColumns.next();
        columns[0].overrideFromReferencedColumnIfNecessary( column );
        columns[0].linkValueUsingDefaultColumnNaming( column, referencedEntity, value );
      }
    }
    else {
      int fkEnum = Ejb3JoinColumn.checkReferencedColumnsType( columns, referencedEntity, mappings );

      if ( Ejb3JoinColumn.NON_PK_REFERENCE == fkEnum ) {
        String referencedPropertyName;
        if ( value instanceof ToOne ) {
          referencedPropertyName = ( (ToOne) value ).getReferencedPropertyName();
        }
        else if ( value instanceof DependantValue ) {
          String propertyName = columns[0].getPropertyName();
          if ( propertyName != null ) {
            Collection collection = (Collection) referencedEntity.getRecursiveProperty( propertyName )
                .getValue();
            referencedPropertyName = collection.getReferencedPropertyName();
          }
          else {
            throw new AnnotationException( "SecondaryTable JoinColumn cannot reference a non primary key" );
          }

View Full Code Here

        ib.setValue( list.getIndex() );
        referenced.addProperty( ib );
      }
    }
    else {
      Collection coll = this.collection;
      throw new AnnotationException(
          "List/array has to be annotated with an @OrderColumn (or @IndexColumn): "
              + coll.getRole()
      );
    }
  }
View Full Code Here

    Map<String,Set<String>> tmpEntityToCollectionRoleMap = new HashMap<String,Set<String>>();
    collectionPersisters = new HashMap();
    Iterator collections = cfg.getCollectionMappings();
    while ( collections.hasNext() ) {
      Collection model = (Collection) collections.next();
      final String cacheRegionName = cacheRegionPrefix + model.getCacheRegionName();
      final AccessType accessType = AccessType.fromExternalName( model.getCacheConcurrencyStrategy() );
      CollectionRegionAccessStrategy accessStrategy = null;
      if ( accessType != null && settings.isSecondLevelCacheEnabled() ) {
        if ( LOG.isTraceEnabled() ) {
          LOG.tracev("Building cache for collection data [{0}]", model.getRole() );
        }
        CollectionRegion collectionRegion = settings.getRegionFactory().buildCollectionRegion( cacheRegionName, properties, CacheDataDescriptionImpl
            .decode( model ) );
        accessStrategy = collectionRegion.buildAccessStrategy( accessType );
        entityAccessStrategies.put( cacheRegionName, accessStrategy );
        allCacheRegions.put( cacheRegionName, collectionRegion );
      }
      CollectionPersister persister = serviceRegistry.getService( PersisterFactory.class ).createCollectionPersister(
          cfg,
          model,
          accessStrategy,
          this
      ) ;
      collectionPersisters.put( model.getRole(), persister.getCollectionMetadata() );
      Type indexType = persister.getIndexType();
      if ( indexType != null && indexType.isAssociationType() && !indexType.isAnyType() ) {
        String entityName = ( ( AssociationType ) indexType ).getAssociatedEntityName( this );
        Set roles = tmpEntityToCollectionRoleMap.get( entityName );
        if ( roles == null ) {
View Full Code Here

TOP

Related Classes of org.hibernate.mapping.Collection

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.