Class AbstractCollectionMapper<T>

All Implemented Interfaces:
DynamicComponentMapperSupport, ModifiedFlagMapperSupport, PropertyMapper
Direct Known Subclasses:
BasicCollectionMapper, ListCollectionMapper, MapCollectionMapper

public abstract class AbstractCollectionMapper<T> extends AbstractPropertyMapper
  • Field Details

    • configuration

      protected final Configuration configuration
    • commonCollectionMapperData

      protected final CommonCollectionMapperData commonCollectionMapperData
    • collectionClass

      protected final Class<? extends T> collectionClass
    • ordinalInId

      protected final boolean ordinalInId
    • revisionTypeInId

      protected final boolean revisionTypeInId
  • Constructor Details

    • AbstractCollectionMapper

      protected AbstractCollectionMapper(Configuration configuration, CommonCollectionMapperData commonCollectionMapperData, Class<? extends T> collectionClass, Class<? extends T> proxyClass, boolean ordinalInId, boolean revisionTypeInId)
  • Method Details

    • getNewCollectionContent

      protected abstract Collection getNewCollectionContent(org.hibernate.collection.spi.PersistentCollection newCollection)
    • getOldCollectionContent

      protected abstract Collection getOldCollectionContent(Serializable oldCollection)
    • buildCollectionChangeSet

      protected abstract Set<Object> buildCollectionChangeSet(Object eventCollection, Collection collection)
    • mapToMapFromObject

      protected abstract void mapToMapFromObject(org.hibernate.engine.spi.SessionImplementor session, Map<String,Object> idData, Map<String,Object> data, Object changed)
      Maps the changed collection element to the given map.
      Parameters:
      idData - Map to which composite-id data should be added.
      data - Where to map the data.
      changed - The changed collection element to map.
    • createIdMap

      protected Map<String,Object> createIdMap(int ordinal)
      Creates map for storing identifier data. Ordinal parameter guarantees uniqueness of primary key. Composite primary key cannot contain embeddable properties since they might be nullable.
      Parameters:
      ordinal - Iteration ordinal.
      Returns:
      Map for holding identifier data.
    • addCollectionChanges

      protected void addCollectionChanges(org.hibernate.engine.spi.SessionImplementor session, List<PersistentCollectionChangeData> collectionChanges, Set<Object> changed, RevisionType revisionType, Object id)
    • mapCollectionChanges

      public List<PersistentCollectionChangeData> mapCollectionChanges(org.hibernate.engine.spi.SessionImplementor session, String referencingPropertyName, org.hibernate.collection.spi.PersistentCollection newColl, Serializable oldColl, Object id)
      Description copied from interface: PropertyMapper
      Maps collection changes.
      Parameters:
      session - The current session.
      referencingPropertyName - Name of the field, which holds the collection in the entity.
      newColl - New collection, after updates.
      oldColl - Old collection, before updates.
      id - Id of the object owning the collection.
      Returns:
      List of changes that need to be performed on the persistent store.
    • mapToMapFromEntity

      public boolean mapToMapFromEntity(org.hibernate.engine.spi.SessionImplementor session, Map<String,Object> data, Object newObj, Object oldObj)
      Description copied from interface: PropertyMapper
      Maps properties to the given map, basing on differences between properties of new and old objects.
      Parameters:
      session - The current session.
      data - Data to map to.
      newObj - New state of the entity.
      oldObj - Old state of the entity.
      Returns:
      True if there are any differences between the states represented by newObj and oldObj.
    • mapModifiedFlagsToMapFromEntity

      public void mapModifiedFlagsToMapFromEntity(org.hibernate.engine.spi.SessionImplementor session, Map<String,Object> data, Object newObj, Object oldObj)
    • mapModifiedFlagsToMapForCollectionChange

      public void mapModifiedFlagsToMapForCollectionChange(String collectionPropertyName, Map<String,Object> data)
    • getInitializor

      protected abstract Initializor<T> getInitializor(EnversService enversService, AuditReaderImplementor versionsReader, Object primaryKey, Number revision, boolean removed)
    • resolveCollectionPersister

      protected org.hibernate.persister.collection.CollectionPersister resolveCollectionPersister(org.hibernate.engine.spi.SessionImplementor session, org.hibernate.collection.spi.PersistentCollection collection)
    • isSame

      protected boolean isSame(org.hibernate.persister.collection.CollectionPersister collectionPersister, Object oldObject, Object newObject)
      Checks whether the old collection element and new collection element are the same. By default, this delegates to the collection persister's CollectionPersister.getElementType().
      Parameters:
      collectionPersister - The collection persister.
      oldObject - The collection element from the old persistent collection.
      newObject - The collection element from the new persistent collection.
      Returns:
      true if the two objects are the same, false otherwise.
    • mapToEntityFromMap

      public void mapToEntityFromMap(EnversService enversService, Object obj, Map data, Object primaryKey, AuditReaderImplementor versionsReader, Number revision)
      Description copied from interface: PropertyMapper
      Maps properties from the given map to the given object.
      Parameters:
      enversService - The EnversService.
      obj - Object to map to.
      data - Data to map from.
      primaryKey - Primary key of the object to which we map (for relations)
      versionsReader - VersionsReader for reading relations
      revision - Revision at which the object is read, for reading relations
    • mapToEntityFromMap

      public Object mapToEntityFromMap(EnversService enversService, Map data, Object primaryKey, AuditReaderImplementor versionsReader, Number revision)
    • mapCollectionChanges

      protected abstract List<PersistentCollectionChangeData> mapCollectionChanges(org.hibernate.engine.spi.SessionImplementor session, org.hibernate.collection.spi.PersistentCollection newColl, Serializable oldColl, Object id)
      Map collection changes using hash identity.
      Parameters:
      session - The session.
      newColl - The new persistent collection.
      oldColl - The old collection.
      id - The owning entity identifier.
      Returns:
      the persistent collection changes.
    • hasPropertiesWithModifiedFlag

      public boolean hasPropertiesWithModifiedFlag()
      Description copied from interface: ModifiedFlagMapperSupport
      Returns whether the associated PropertyMapper has any properties that use the witModifiedFlag feature.
      Returns:
      true if a property uses withModifiedFlag, otherwise false.