## org.hibernate.persister.entity
Class UnionSubclassEntityPersister

    java.lang.Object
      org.hibernate.persister.entity.AbstractEntityPersister
          org.hibernate.persister.entity.UnionSubclassEntityPersister

All Implemented Interfaces:
  LazyPropertyInitializer, OptimisticCacheSource, PostInsertIdentityPersister, ClassMetadata, EntityPersister, Joinable, Loadable, Lockable, OuterJoinLoadable, PropertyMapping, Queryable, SQLLoadable, UniqueKeyLoadable

    public class UnionSubclassEntityPersister

extends AbstractEntityPersister

Implementation of the "table-per-concrete-class" or "roll-down" mapping strategy for an entity and its inheritence hierarchy.

Nested Class Summary

Nested classes/interfaces inherited from class org.hibernate.persister.entity.AbstractEntityPersister
`AbstractEntityPersister.InclusionChecker`

Nested classes/interfaces inherited from interface org.hibernate.persister.entity.Queryable
`Queryable.Declarer`

Field Summary

Fields inherited from class org.hibernate.persister.entity.AbstractEntityPersister
`customSQLDelete, customSQLInsert, customSQLUpdate, deleteCallable, deleteResultCheckStyles, ENTITY_CLASS, insertCallable, insertResultCheckStyles, propertyMapping, rowIdName, updateCallable, updateResultCheckStyles`

Fields inherited from interface org.hibernate.persister.entity.Loadable
`ROWID_ALIAS`

Fields inherited from interface org.hibernate.persister.entity.EntityPersister
`ENTITY_ID`

Fields inherited from interface org.hibernate.bytecode.instrumentation.spi.LazyPropertyInitializer
`UNFETCHED_PROPERTY`

Constructor Summary
`UnionSubclassEntityPersister(EntityBinding entityBinding, EntityRegionAccessStrategy cacheAccessStrategy, NaturalIdRegionAccessStrategy naturalIdRegionAccessStrategy, SessionFactoryImplementor factory, Mapping mapping)`
`UnionSubclassEntityPersister(PersistentClass persistentClass, EntityRegionAccessStrategy cacheAccessStrategy, NaturalIdRegionAccessStrategy naturalIdRegionAccessStrategy, SessionFactoryImplementor factory, Mapping mapping)`

Method Summary
`protected void` `addDiscriminatorToSelect(SelectFragment select, String name, String suffix)`
`String` `filterFragment(String name)`
`String` `fromTableFragment(String name)` Get the main from table fragment, given a query alias.
`protected String` `generateSelectString(LockMode lockMode)` Generate the SQL that selects a row by id
`protected String` `generateSubquery(PersistentClass model, Mapping mapping)`
`String[]` `getConstraintOrderedTableNameClosure()` Get the names of all tables used in the hierarchy (up and down) ordered such that deletes in the given order would not cause constraint violations.
`String[][]` `getContraintOrderedTableKeyColumnClosure()` For each table specified in `Queryable.getConstraintOrderedTableNameClosure()`, get the columns that define the key between the various hierarchy classes.
`protected String` `getDiscriminatorFormula()`
`String` `getDiscriminatorSQLValue()` Get the discriminator value for this particular concrete subclass, as a string that may be embedded in a select statement
`Type` `getDiscriminatorType()` Get the discriminator type
`Object` `getDiscriminatorValue()` Get the discriminator value
`protected String[]` `getKeyColumns(int j)`
`Serializable[]` `getPropertySpaces()` Returns an array of objects that identify spaces in which properties of this entity are persisted, for instances of this class only.
`String` `getPropertyTableName(String propertyName)` Get the table name for the given property path
`protected int[]` `getPropertyTableNumbers()`
`protected int[]` `getPropertyTableNumbersInSelect()`
`Serializable[]` `getQuerySpaces()` Returns an array of objects that identify spaces in which properties of this entity are persisted, for instances of this class and its subclasses.
`String[]` `getSubclassClosure()`
`protected int[]` `getSubclassColumnTableNumberClosure()`
`String` `getSubclassForDiscriminatorValue(Object value)` Get the concrete subclass corresponding to the given discriminator value
`protected int[]` `getSubclassFormulaTableNumberClosure()`
`String` `getSubclassPropertyTableName(int i)` Return the table name used to persist the numbered property of the class or a subclass.
`protected int` `getSubclassPropertyTableNumber(int i)`
`int` `getSubclassPropertyTableNumber(String propertyName)` Warning: When there are duplicated property names in the subclasses of the class, this method may return the wrong table number for the duplicated subclass property (note that SingleTableEntityPersister defines an overloaded form which takes the entity name.
`protected String[]` `getSubclassTableKeyColumns(int j)`
`String` `getSubclassTableName(int j)` Get the name of the table with the given index from the internal array.
`int` `getSubclassTableSpan()`
`protected boolean[]` `getTableHasColumns()`
`String` `getTableName()` The table to join to.
`protected String` `getTableName(int j)`
`int` `getTableSpan()`
`protected boolean` `isClassOrSuperclassTable(int j)`
`protected boolean` `isDiscriminatorFormula()`
`boolean` `isMultiTable()` Is the inheritance hierarchy described by this persister contained across multiple tables?
`protected boolean` `isPropertyOfTable(int property, int j)`
`protected boolean` `isTableCascadeDeleteEnabled(int j)`

Methods inherited from class org.hibernate.persister.entity.AbstractEntityPersister

`addDiscriminatorToInsert, afterInitialize, afterReassociate, canExtractIdOutOfEntity, check, concretePropertySelectFragment, concretePropertySelectFragment, concretePropertySelectFragment, concretePropertySelectFragmentSansLeadingComma, consumesCollectionAlias, consumesEntityAlias, countSubclassProperties, createEntityLoader, createEntityLoader, createEntityLoader, createFrom, createJoin, createJoin, createLoaders, createProxy, createQueryLoader, createSelect, createUniqueKeyLoaders, createWhereByKey, dehydrate, dehydrate, delete, delete, filterFragment, findDirty, findModified, forceVersionIncrement, fromJoinFragment, generateDeleteString, generateFilterConditionAlias, generateIdentityInsertString, generateInsertGeneratedValuesSelectString, generateInsertString, generateInsertString, generateInsertString, generateLazySelectString, generateLocker, generateSelectVersionString, generateSnapshotSelectString, generateTableAlias, generateUpdateGeneratedValuesSelectString, generateUpdateString, generateUpdateString, getCacheAccessStrategy, getCacheEntryStructure, getCascadeStyle, getClassMetadata, getConcreteProxyClass, getCurrentVersion, getDatabaseSnapshot, getDiscriminatorAlias, getDiscriminatorAlias, getDiscriminatorColumnName, getDiscriminatorColumnReaders, getDiscriminatorColumnReaderTemplate, getDiscriminatorFormulaTemplate, getEntityMetamodel, getEntityMode, getEntityName, getEntityTuplizer, getEntityType, getFactory, getFetchMode, getIdentifier, getIdentifier, getIdentifierAliases, getIdentifierAliases, getIdentifierColumnNames, getIdentifierColumnReaders, getIdentifierColumnReaderTemplates, getIdentifierColumnSpan, getIdentifierGenerator, getIdentifierPropertyName, getIdentifierType, getIdentitySelectString, getInstrumentationMetadata, getKeyColumnNames, getLazyProperties, getLoaders, getMappedClass, getMappedSuperclass, getName, getNaturalIdCacheAccessStrategy, getNaturalIdentifierProperties, getNaturalIdentifierSnapshot, getNonLazyPropertyUpdateability, getPropertiesToInsert, getPropertiesToUpdate, getPropertyAliases, getPropertyCascadeStyles, getPropertyCheckability, getPropertyColumnInsertable, getPropertyColumnNames, getPropertyColumnNames, getPropertyColumnSpan, getPropertyColumnUpdateable, getPropertyColumnWriters, getPropertyIndex, getPropertyInsertability, getPropertyInsertGenerationInclusions, getPropertyLaziness, getPropertyNames, getPropertyNullability, getPropertySelectable, getPropertySpan, getPropertySubclassNames, getPropertyType, getPropertyTypes, getPropertyUniqueness, getPropertyUpdateability, getPropertyUpdateability, getPropertyUpdateGenerationInclusions, getPropertyValue, getPropertyValue, getPropertyValues, getPropertyValuesToInsert, getPropertyVersionability, getRootEntityName, getRootTableAlias, getRootTableIdentifierColumnNames, getRootTableKeyColumnNames, getRootTableName, getSelectByUniqueKeyString, getSequentialSelect, getSQLDeleteStrings, getSQLIdentityInsertString, getSQLInsertStrings, getSQLLazySelectString, getSQLLazyUpdateByRowIdStrings, getSQLLazyUpdateStrings, getSQLSnapshotSelectString, getSQLUpdateByRowIdStrings, getSQLUpdateStrings, getSQLWhereString, getSubclassColumnAliasClosure, getSubclassColumnClosure, getSubclassColumnLazyiness, getSubclassColumnReaderTemplateClosure, getSubclassEntityPersister, getSubclassFormulaAliasClosure, getSubclassFormulaClosure, getSubclassFormulaLazyiness, getSubclassFormulaTemplateClosure, getSubclassPropertyColumnAliases, getSubclassPropertyColumnNameClosure, getSubclassPropertyColumnNames, getSubclassPropertyColumnNames, getSubclassPropertyColumnReaderClosure, getSubclassPropertyColumnReaderTemplateClosure, getSubclassPropertyDeclarer, getSubclassPropertyFormulaTemplateClosure, getSubclassPropertyName, getSubclassPropertyNameClosure, getSubclassPropertySubclassNameClosure, getSubclassPropertyType, getSubclassPropertyTypeClosure, getTableUpdateNeeded, getTemplateFromColumn, getTemplateFromString, getTemporaryIdTableDDL, getTemporaryIdTableName, getType, getTypeDiscriminatorMetadata, getVersion, getVersionColumnName, getVersionComparator, getVersionedTableName, getVersionProperty, getVersionSelectString, getVersionType, hasCache, hasCascades, hasCollections, hasEmbeddedCompositeIdentifier, hasFormulaProperties, hasIdentifierProperty, hasInsertGeneratedProperties, hasLazyProperties, hasMutableProperties, hasNaturalIdCache, hasNaturalIdentifier, hasProxy, hasRowId, hasSequentialSelect, hasSubclasses, hasSubselectLoadableCollections, hasUninitializedLazyProperties, hasUpdateGeneratedProperties, hasWhere, hydrate, identifierSelectFragment, implementsLifecycle, initializeLazyProperty, initLockers, initPropertyPaths, initSubclassPropertyAliasesMap, initSubclassPropertyAliasesMap, insert, insert, insert, insert, instantiate, isAbstract, isBatchable, isBatchLoadable, isCacheInvalidationRequired, isCollection, isDefinedOnSubclass, isDeleteCallable, isExplicitPolymorphism, isIdentifierAssignedByInsert, isInherited, isInsertCallable, isInstance, isInstrumented, isInverseSubclassTable, isInverseTable, isLazyPropertiesCacheable, isMutable, isNullableSubclassTable, isNullableTable, isPolymorphic, isSelectBeforeUpdateRequired, isSubclassEntityName, isSubclassPropertyDeferred, isSubclassPropertyNullable, isSubclassTableLazy, isSubclassTableSequentialSelect, isTransient, isUpdateCallable, isVersioned, isVersionPropertyGenerated, isVersionPropertyInsertable, load, load, loadByUniqueKey, loadEntityIdByNaturalId, lock, lock, logStaticSQL, oneToManyFilterFragment, optimisticLockStyle, postConstruct, postInstantiate, processInsertGeneratedProperties, processUpdateGeneratedProperties, propertySelectFragment, propertySelectFragmentFragment, registerAffectingFetchProfile, renderSelect, resetIdentifier, selectFragment, selectFragment, setIdentifier, setPropertyValue, setPropertyValue, setPropertyValues, toColumns, toColumns, toColumns, toString, toType, update, update, updateOrInsert, useDynamicInsert, useDynamicUpdate, useGetGeneratedKeys, useInsertSelectIdentity, whereJoinFragment`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Constructor Detail

### UnionSubclassEntityPersister

    public UnionSubclassEntityPersister(PersistentClass persistentClass,
                                        EntityRegionAccessStrategy cacheAccessStrategy,
                                        NaturalIdRegionAccessStrategy naturalIdRegionAccessStrategy,
                                        SessionFactoryImplementor factory,
                                        Mapping mapping)
                                 throws HibernateException

Throws:
  `HibernateException`

### UnionSubclassEntityPersister

    public UnionSubclassEntityPersister(EntityBinding entityBinding,
                                        EntityRegionAccessStrategy cacheAccessStrategy,
                                        NaturalIdRegionAccessStrategy naturalIdRegionAccessStrategy,
                                        SessionFactoryImplementor factory,
                                        Mapping mapping)
                                 throws HibernateException

Throws:
  `HibernateException`

Method Detail

### getQuerySpaces

    public Serializable[] getQuerySpaces()

  Description copied from interface: `EntityPersister`
  Returns an array of objects that identify spaces in which properties of this entity are persisted, for instances of this class and its subclasses.

  Much like `EntityPersister.getPropertySpaces()`, except that here we include subclass entity spaces.

  Specified by:
    `getQuerySpaces` in interface `EntityPersister`
  Overrides:
    `getQuerySpaces` in class `AbstractEntityPersister`
  Returns:
    The query spaces.

### getTableName

    public String getTableName()

  Description copied from interface: `Joinable`
  The table to join to.

### getDiscriminatorType

    public Type getDiscriminatorType()

  Description copied from interface: `Loadable`
  Get the discriminator type

### getDiscriminatorValue

    public Object getDiscriminatorValue()

  Description copied from interface: `Loadable`
  Get the discriminator value

### getDiscriminatorSQLValue

    public String getDiscriminatorSQLValue()

  Description copied from interface: `Queryable`
  Get the discriminator value for this particular concrete subclass, as a string that may be embedded in a select statement

### getSubclassClosure

    public String[] getSubclassClosure()

### getSubclassForDiscriminatorValue

    public String getSubclassForDiscriminatorValue(Object value)

  Description copied from interface: `Loadable`
  Get the concrete subclass corresponding to the given discriminator value

### getPropertySpaces

    public Serializable[] getPropertySpaces()

  Description copied from interface: `EntityPersister`
  Returns an array of objects that identify spaces in which properties of this entity are persisted, for instances of this class only.

  For most implementations, this returns the complete set of table names to which instances of the mapped entity are persisted (not accounting for superclass entity mappings).

  Returns:
    The property spaces.

### isDiscriminatorFormula

    protected boolean isDiscriminatorFormula()

### generateSelectString

    protected String generateSelectString(LockMode lockMode)

  Generate the SQL that selects a row by id

### getDiscriminatorFormula

    protected String getDiscriminatorFormula()

### getTableName

    protected String getTableName(int j)

  Specified by:
    `getTableName` in class `AbstractEntityPersister`

### getKeyColumns

    protected String[] getKeyColumns(int j)

  Specified by:
    `getKeyColumns` in class `AbstractEntityPersister`

### isTableCascadeDeleteEnabled

    protected boolean isTableCascadeDeleteEnabled(int j)

  Specified by:
    `isTableCascadeDeleteEnabled` in class `AbstractEntityPersister`

### isPropertyOfTable

    protected boolean isPropertyOfTable(int property,
                                        int j)

  Specified by:
    `isPropertyOfTable` in class `AbstractEntityPersister`

### fromTableFragment

    public String fromTableFragment(String name)

  Description copied from interface: `OuterJoinLoadable`
  Get the main from table fragment, given a query alias.

### filterFragment

    public String filterFragment(String name)

  Specified by:
    `filterFragment` in class `AbstractEntityPersister`

### getSubclassPropertyTableName

    public String getSubclassPropertyTableName(int i)

  Description copied from interface: `OuterJoinLoadable`
  Return the table name used to persist the numbered property of the class or a subclass.

### addDiscriminatorToSelect

    protected void addDiscriminatorToSelect(SelectFragment select,
                                            String name,
                                            String suffix)

  Overrides:
    `addDiscriminatorToSelect` in class `AbstractEntityPersister`

### getPropertyTableNumbersInSelect

    protected int[] getPropertyTableNumbersInSelect()

  Specified by:
    `getPropertyTableNumbersInSelect` in class `AbstractEntityPersister`

### getSubclassPropertyTableNumber

    protected int getSubclassPropertyTableNumber(int i)

  Specified by:
    `getSubclassPropertyTableNumber` in class `AbstractEntityPersister`

### getSubclassPropertyTableNumber

    public int getSubclassPropertyTableNumber(String propertyName)

  Description copied from class: `AbstractEntityPersister`
  Warning: When there are duplicated property names in the subclasses of the class, this method may return the wrong table number for the duplicated subclass property (note that SingleTableEntityPersister defines an overloaded form which takes the entity name.

  Specified by:
    `getSubclassPropertyTableNumber` in interface `Queryable`
  Overrides:
    `getSubclassPropertyTableNumber` in class `AbstractEntityPersister`
  Parameters:
    `propertyName` - The name of the property.
  Returns:
    The number of the table to which the property is mapped.

### isMultiTable

    public boolean isMultiTable()

  Description copied from interface: `Queryable`
  Is the inheritance hierarchy described by this persister contained across multiple tables?

  Specified by:
    `isMultiTable` in interface `Queryable`
  Overrides:
    `isMultiTable` in class `AbstractEntityPersister`
  Returns:
    True if the inheritance hierarchy is spread across multiple tables; false otherwise.

### getTableSpan

    public int getTableSpan()

  Specified by:
    `getTableSpan` in class `AbstractEntityPersister`

### getSubclassColumnTableNumberClosure

    protected int[] getSubclassColumnTableNumberClosure()

  Specified by:
    `getSubclassColumnTableNumberClosure` in class `AbstractEntityPersister`

### getSubclassFormulaTableNumberClosure

    protected int[] getSubclassFormulaTableNumberClosure()

  Specified by:
    `getSubclassFormulaTableNumberClosure` in class `AbstractEntityPersister`

### getTableHasColumns

    protected boolean[] getTableHasColumns()

### getPropertyTableNumbers

    protected int[] getPropertyTableNumbers()

  Specified by:
    `getPropertyTableNumbers` in class `AbstractEntityPersister`

### generateSubquery

    protected String generateSubquery(PersistentClass model,
                                      Mapping mapping)

### getSubclassTableKeyColumns

    protected String[] getSubclassTableKeyColumns(int j)

  Specified by:
    `getSubclassTableKeyColumns` in class `AbstractEntityPersister`

### getSubclassTableName

    public String getSubclassTableName(int j)

  Description copied from interface: `Queryable`
  Get the name of the table with the given index from the internal array.

  Specified by:
    `getSubclassTableName` in interface `Queryable`
  Specified by:
    `getSubclassTableName` in class `AbstractEntityPersister`
  Parameters:
    `j` - The index into the internal array.

### getSubclassTableSpan

    public int getSubclassTableSpan()

  Specified by:
    `getSubclassTableSpan` in class `AbstractEntityPersister`

### isClassOrSuperclassTable

    protected boolean isClassOrSuperclassTable(int j)

  Specified by:
    `isClassOrSuperclassTable` in class `AbstractEntityPersister`

### getPropertyTableName

    public String getPropertyTableName(String propertyName)

  Description copied from interface: `OuterJoinLoadable`
  Get the table name for the given property path

### getConstraintOrderedTableNameClosure

    public String[] getConstraintOrderedTableNameClosure()

  Description copied from interface: `Queryable`
  Get the names of all tables used in the hierarchy (up and down) ordered such that deletes in the given order would not cause constraint violations.

  Returns:
    The ordered array of table names.

### getContraintOrderedTableKeyColumnClosure

    public String[][] getContraintOrderedTableKeyColumnClosure()

  Description copied from interface: `Queryable`
  For each table specified in `Queryable.getConstraintOrderedTableNameClosure()`, get the columns that define the key between the various hierarchy classes.

  The first dimension here corresponds to the table indexes returned in `Queryable.getConstraintOrderedTableNameClosure()`.

  The second dimension should have the same length across all the elements in the first dimension. If not, that would be a problem ;)

Copyright © 2001-2012 Red Hat, Inc. All Rights Reserved.