public class SingleTableEntityPersister extends AbstractEntityPersister
The default implementation of the <tt>EntityPersister</tt> interface. Implements the "table-per-class-hierarchy" or "roll-up" mapping strategy for an entity class and its inheritence hierarchy. This is implemented as a single table holding all classes in the hierarchy with a discrimator column used to determine which concrete class is referenced.
hasIdentifierPropertyAbstractEntityPersister.CacheEntryHelper, AbstractEntityPersister.InclusionCheckerQueryable.DeclarerLazyPropertyInitializer.InterceptorImplementorbatchSize, customSQLDelete, customSQLInsert, customSQLUpdate, deleteCallable, deleteResultCheckStyles, ENTITY_CLASS, insertCallable, insertResultCheckStyles, propertyMapping, rowIdName, updateCallable, updateResultCheckStylesROWID_ALIASENTITY_IDUNFETCHED_PROPERTY| Constructor and Description |
|---|
SingleTableEntityPersister(PersistentClass persistentClass,
EntityDataAccess cacheAccessStrategy,
NaturalIdDataAccess naturalIdRegionAccessStrategy,
PersisterCreationContext creationContext) |
| Modifier and Type | Method and Description |
|---|---|
protected void |
addDiscriminatorToInsert(Insert insert) |
protected void |
addDiscriminatorToSelect(SelectFragment select,
String name,
String suffix) |
protected void |
doPostInstantiate() |
String |
filterFragment(String alias) |
String |
filterFragment(String alias,
Set<String> treatAsDeclarations) |
String |
fromTableFragment(String name)
Get the main from table fragment, given a query alias.
|
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 |
getDiscriminatorAlias() |
String |
getDiscriminatorColumnName() |
String |
getDiscriminatorColumnReaders() |
String |
getDiscriminatorColumnReaderTemplate() |
protected String |
getDiscriminatorFormula() |
protected String |
getDiscriminatorFormulaTemplate() |
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
|
org.hibernate.internal.FilterAliasGenerator |
getFilterAliasGenerator(String rootAlias) |
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() |
protected String |
getSequentialSelect(String entityName) |
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) |
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() |
String |
getTableName()
The table to join to.
|
protected String |
getTableName(int j) |
int |
getTableSpan() |
boolean |
hasSequentialSelect() |
protected boolean |
isClassOrSuperclassTable(int j) |
protected boolean |
isDiscriminatorFormula() |
protected boolean |
isInverseSubclassTable(int j) |
protected boolean |
isInverseTable(int j) |
boolean |
isMultiTable()
Is the inheritance hierarchy described by this persister contained across
multiple tables?
|
protected boolean |
isNullableSubclassTable(int j) |
protected boolean |
isNullableTable(int j) |
protected boolean |
isPropertyOfTable(int property,
int j) |
protected boolean |
isSubclassPropertyDeferred(String propertyName,
String entityName) |
protected boolean |
isSubclassTableLazy(int j) |
protected boolean |
isSubclassTableSequentialSelect(int j) |
protected boolean |
isTableCascadeDeleteEnabled(int j) |
String |
oneToManyFilterFragment(String alias) |
String |
oneToManyFilterFragment(String alias,
Set<String> treatAsDeclarations) |
afterInitialize, afterReassociate, buildCacheEntry, buildCacheEntryHelper, canExtractIdOutOfEntity, canReadFromCache, canUseReferenceCacheEntries, canWriteToCache, check, checkVersion, concretePropertySelectFragment, concretePropertySelectFragment, concretePropertySelectFragmentSansLeadingComma, consumesCollectionAlias, consumesEntityAlias, countSubclassProperties, createEntityLoader, createEntityLoader, createEntityLoader, createFrom, createJoin, createJoin, createLoaders, createProxy, createQueryLoader, createSelect, createUniqueKeyLoaders, createWhereByKey, dehydrate, dehydrate, delete, delete, determineSubclassTableJoinType, determineTableName, determineTableNumberForColumn, filterFragment, filterFragment, findDirty, findModified, forceVersionIncrement, fromJoinFragment, fromJoinFragment, generateDeleteString, generateEntityDefinition, generateFilterConditionAlias, generateIdByUniqueKeySelectString, generateIdentityInsertString, generateInsertGeneratedValuesSelectString, generateInsertString, generateInsertString, generateInsertString, generateLazySelectStringsByFetchGroup, generateLocker, generateSelectVersionString, generateSnapshotSelectString, generateTableAlias, generateUpdateGeneratedValuesSelectString, generateUpdateString, generateUpdateString, getAppropriateLoader, getAttributes, getCacheAccessStrategy, getCacheEntryStructure, getCascadeStyle, getClassMetadata, getCollectionKey, getConcreteProxyClass, getCurrentVersion, getDatabaseSnapshot, getDiscriminatorAlias, getEntityEntryFactory, getEntityKeyDefinition, getEntityMetamodel, getEntityMode, getEntityName, getEntityPersister, getEntityTuplizer, getEntityType, getFactory, getFetchMode, getIdByUniqueKey, getIdentifier, getIdentifier, getIdentifierAliases, getIdentifierAliases, getIdentifierColumnNames, getIdentifierColumnReaders, getIdentifierColumnReaderTemplates, getIdentifierColumnSpan, getIdentifierGenerator, getIdentifierPropertyName, getIdentifierType, getIdentitySelectString, getInstrumentationMetadata, getKeyColumnNames, getLoaderByLockMode, getLoaders, getMappedClass, getMappedSuperclass, getName, getNaturalIdCacheAccessStrategy, getNaturalIdentifierProperties, getNaturalIdentifierSnapshot, getNavigableRole, getNonLazyPropertyUpdateability, getPolymorphicJoinColumns, 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, getQuerySpaces, getRootEntityName, getRootTableAlias, getRootTableIdentifierColumnNames, getRootTableKeyColumnNames, getRootTableName, getSelectByUniqueKeyString, 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, getSubclassPropertyTableNumber, getSubclassPropertyType, getSubclassPropertyTypeClosure, getTableAliasForColumn, getTableId, getTableUpdateNeeded, getTemplateFromString, getType, getTypeDiscriminatorMetadata, getVersion, getVersionColumnName, getVersionComparator, getVersionedTableName, getVersionProperty, getVersionSelectString, getVersionType, hasCache, hasCascades, hasCollections, hasEmbeddedCompositeIdentifier, hasFormulaProperties, hasIdentifierProperty, hasInsertGeneratedProperties, hasLazyProperties, hasMutableProperties, hasNaturalIdCache, hasNaturalIdentifier, hasProxy, hasRowId, hasSubclasses, hasSubselectLoadableCollections, hasUninitializedLazyProperties, hasUpdateGeneratedProperties, hasWhere, hydrate, identifierSelectFragment, implementsLifecycle, initializeLazyProperty, initLockers, initPropertyPaths, initSubclassPropertyAliasesMap, insert, insert, insert, insert, instantiate, isAbstract, isAllNull, isBatchable, isBatchLoadable, isCacheInvalidationRequired, isCollection, isDefinedOnSubclass, isDeleteCallable, isExplicitPolymorphism, isIdentifierAssignedByInsert, isInherited, isInsertCallable, isInstance, isInstrumented, isLazyPropertiesCacheable, isModifiableEntity, isMutable, isNaturalIdNonNullable, isPolymorphic, isSelectBeforeUpdateRequired, isSubclassEntityName, isSubclassPropertyNullable, isSubclassTableIndicatedByTreatAsDeclarations, isTransient, isUpdateCallable, isVersioned, isVersionPropertyGenerated, isVersionPropertyInsertable, load, load, loadByUniqueKey, loadEntityIdByNaturalId, lock, lock, logStaticSQL, multiLoad, optimisticLockStyle, postConstruct, postInstantiate, processInsertGeneratedProperties, processUpdateGeneratedProperties, propertySelectFragment, propertySelectFragmentFragment, registerAffectingFetchProfile, renderSelect, resetIdentifier, resolveAttributeIndexes, selectFragment, selectFragment, setIdentifier, setPropertyValue, setPropertyValue, setPropertyValues, toColumns, toColumns, toColumns, toString, toType, update, update, updateOrInsert, useDynamicInsert, useDynamicUpdate, useGetGeneratedKeys, useInsertSelectIdentity, whereJoinFragment, whereJoinFragmentclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitgetIdentifier, getPropertyValuesToInsert, instantiate, setIdentifierpublic SingleTableEntityPersister(PersistentClass persistentClass, EntityDataAccess cacheAccessStrategy, NaturalIdDataAccess naturalIdRegionAccessStrategy, PersisterCreationContext creationContext) throws HibernateException
HibernateExceptionprotected boolean isInverseTable(int j)
isInverseTable in class AbstractEntityPersisterprotected boolean isInverseSubclassTable(int j)
isInverseSubclassTable in class AbstractEntityPersisterpublic String getDiscriminatorColumnName()
getDiscriminatorColumnName in interface LoadablegetDiscriminatorColumnName in class AbstractEntityPersisterpublic String getDiscriminatorColumnReaders()
getDiscriminatorColumnReaders in class AbstractEntityPersisterpublic String getDiscriminatorColumnReaderTemplate()
getDiscriminatorColumnReaderTemplate in class AbstractEntityPersisterprotected String getDiscriminatorAlias()
getDiscriminatorAlias in class AbstractEntityPersisterprotected String getDiscriminatorFormulaTemplate()
getDiscriminatorFormulaTemplate in class AbstractEntityPersisterpublic String getTableName()
JoinableThe table to join to.
public Type getDiscriminatorType()
LoadableGet the discriminator type
public Object getDiscriminatorValue()
LoadableGet the discriminator value
public String getDiscriminatorSQLValue()
QueryableGet the discriminator value for this particular concrete subclass, as a string that may be embedded in a select statement
public String[] getSubclassClosure()
public String getSubclassForDiscriminatorValue(Object value)
LoadableGet the concrete subclass corresponding to the given discriminator value
public Serializable[] getPropertySpaces()
EntityPersisterReturns an array of objects that identify spaces in which properties of this entity are persisted, for instances of this class only. <p/> 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).
protected boolean isDiscriminatorFormula()
protected String getDiscriminatorFormula()
protected String getTableName(int j)
getTableName in class AbstractEntityPersisterprotected String[] getKeyColumns(int j)
getKeyColumns in class AbstractEntityPersisterprotected boolean isTableCascadeDeleteEnabled(int j)
isTableCascadeDeleteEnabled in class AbstractEntityPersisterprotected boolean isPropertyOfTable(int property,
int j)
isPropertyOfTable in class AbstractEntityPersisterprotected boolean isSubclassTableSequentialSelect(int j)
isSubclassTableSequentialSelect in class AbstractEntityPersisterpublic String fromTableFragment(String name)
OuterJoinLoadableGet the main from table fragment, given a query alias.
public String filterFragment(String alias) throws MappingException
filterFragment in class AbstractEntityPersisterMappingExceptionpublic String oneToManyFilterFragment(String alias) throws MappingException
oneToManyFilterFragment in interface JoinableoneToManyFilterFragment in class AbstractEntityPersisterMappingExceptionpublic String oneToManyFilterFragment(String alias, Set<String> treatAsDeclarations)
oneToManyFilterFragment in interface JoinableoneToManyFilterFragment in class AbstractEntityPersisterpublic String filterFragment(String alias, Set<String> treatAsDeclarations)
filterFragment in class AbstractEntityPersisterpublic String getSubclassPropertyTableName(int i)
OuterJoinLoadableReturn the table name used to persist the numbered property of the class or a subclass.
protected void addDiscriminatorToSelect(SelectFragment select, String name, String suffix)
addDiscriminatorToSelect in class AbstractEntityPersisterprotected int[] getPropertyTableNumbersInSelect()
getPropertyTableNumbersInSelect in class AbstractEntityPersisterprotected int getSubclassPropertyTableNumber(int i)
getSubclassPropertyTableNumber in class AbstractEntityPersisterpublic int getTableSpan()
getTableSpan in class AbstractEntityPersisterprotected void addDiscriminatorToInsert(Insert insert)
addDiscriminatorToInsert in class AbstractEntityPersisterprotected int[] getSubclassColumnTableNumberClosure()
getSubclassColumnTableNumberClosure in class AbstractEntityPersisterprotected int[] getSubclassFormulaTableNumberClosure()
getSubclassFormulaTableNumberClosure in class AbstractEntityPersisterprotected int[] getPropertyTableNumbers()
getPropertyTableNumbers in class AbstractEntityPersisterprotected boolean isSubclassPropertyDeferred(String propertyName, String entityName)
isSubclassPropertyDeferred in class AbstractEntityPersisterpublic boolean hasSequentialSelect()
hasSequentialSelect in class AbstractEntityPersisterprotected String getSequentialSelect(String entityName)
getSequentialSelect in class AbstractEntityPersisterprotected String[] getSubclassTableKeyColumns(int j)
getSubclassTableKeyColumns in class AbstractEntityPersisterpublic String getSubclassTableName(int j)
QueryableGet the name of the table with the given index from the internal array.
getSubclassTableName in interface QueryablegetSubclassTableName in class AbstractEntityPersisterj - The index into the internal array.public int getSubclassTableSpan()
getSubclassTableSpan in class AbstractEntityPersisterprotected boolean isClassOrSuperclassTable(int j)
isClassOrSuperclassTable in class AbstractEntityPersisterprotected boolean isSubclassTableLazy(int j)
isSubclassTableLazy in class AbstractEntityPersisterprotected boolean isNullableTable(int j)
isNullableTable in class AbstractEntityPersisterprotected boolean isNullableSubclassTable(int j)
isNullableSubclassTable in class AbstractEntityPersisterpublic String getPropertyTableName(String propertyName)
OuterJoinLoadableGet the table name for the given property path
protected void doPostInstantiate()
doPostInstantiate in class AbstractEntityPersisterpublic boolean isMultiTable()
QueryableIs the inheritance hierarchy described by this persister contained across multiple tables?
isMultiTable in interface QueryableisMultiTable in class AbstractEntityPersisterpublic String[] getConstraintOrderedTableNameClosure()
QueryableGet 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.
public String[][] getContraintOrderedTableKeyColumnClosure()
QueryableFor each table specified in Queryable.getConstraintOrderedTableNameClosure(), get
the columns that define the key between the various hierarchy classes.
<p/>
The first dimension here corresponds to the table indexes returned in
Queryable.getConstraintOrderedTableNameClosure().
<p/>
The second dimension should have the same length across all the elements in
the first dimension. If not, that would be a problem ;)
public org.hibernate.internal.FilterAliasGenerator getFilterAliasGenerator(String rootAlias)
Copyright © 2001-2018 Red Hat, Inc. All Rights Reserved.