Class SingleTableEntityPersister
- java.lang.Object
-
- org.hibernate.persister.entity.AbstractEntityPersister
-
- org.hibernate.persister.entity.SingleTableEntityPersister
-
- All Implemented Interfaces:
LazyPropertyInitializer
,FetchProfileAffectee
,PostInsertIdentityPersister
,Loadable
,ClassMetadata
,Bindable
,Discriminable
,EntityMappingType
,EntityValuedModelPart
,FilterRestrictable
,InFlightEntityMappingType
,JdbcMappingContainer
,ManagedMappingType
,MappingModelExpressible
,MappingType
,ModelPart
,ModelPartContainer
,Restrictable
,WhereRestrictable
,DeprecatedEntityStuff
,EntityPersister
,Joinable
,Loadable
,Lockable
,EntityMutationTarget
,OuterJoinLoadable
,PropertyMapping
,Queryable
,SQLLoadable
,UniqueKeyLoadable
,AttributeSource
,RootTableGroupProducer
,TableGroupProducer
,MutationTarget<EntityTableMapping>
,FetchableContainer
@Internal public class SingleTableEntityPersister extends AbstractEntityPersister
The default implementation of theEntityPersister
interface. Implements theInheritanceType.SINGLE_TABLE
mapping strategy for an entity class and its inheritance hierarchy.This is implemented as a single table for all classes of the hierarchy, with a discriminator column used to determine which concrete class a row represents.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.hibernate.persister.entity.AbstractEntityPersister
AbstractEntityPersister.CacheEntryHelper
-
Nested classes/interfaces inherited from interface org.hibernate.metamodel.mapping.Bindable
Bindable.JdbcValuesBiConsumer<X,Y>, Bindable.JdbcValuesConsumer
-
Nested classes/interfaces inherited from interface org.hibernate.metamodel.mapping.EntityMappingType
EntityMappingType.ConstraintOrderedTableConsumer
-
Nested classes/interfaces inherited from interface org.hibernate.bytecode.enhance.spi.LazyPropertyInitializer
LazyPropertyInitializer.InterceptorImplementor
-
Nested classes/interfaces inherited from interface org.hibernate.metamodel.mapping.ModelPart
ModelPart.JdbcValueBiConsumer<X,Y>, ModelPart.JdbcValueConsumer
-
Nested classes/interfaces inherited from interface org.hibernate.persister.entity.Queryable
Queryable.Declarer
-
-
Field Summary
-
Fields inherited from class org.hibernate.persister.entity.AbstractEntityPersister
accessOptimizer, batchSize, customSQLDelete, customSQLInsert, customSQLUpdate, declaredAttributeMappings, deleteCallable, deleteExpectations, ENTITY_CLASS, fullDiscriminatorSQLValues, insertCallable, insertExpectations, propertyMapping, rowIdName, staticFetchableList, updateCallable, updateExpectations, VERSION_COLUMN_ALIAS
-
Fields inherited from interface org.hibernate.persister.entity.EntityPersister
ENTITY_ID
-
Fields inherited from interface org.hibernate.bytecode.enhance.spi.LazyPropertyInitializer
UNFETCHED_PROPERTY
-
Fields inherited from interface org.hibernate.persister.entity.Loadable
ROWID_ALIAS
-
-
Constructor Summary
Constructors Constructor Description SingleTableEntityPersister(PersistentClass persistentClass, EntityDataAccess cacheAccessStrategy, NaturalIdDataAccess naturalIdRegionAccessStrategy, RuntimeModelCreationContext creationContext)
SingleTableEntityPersister(PersistentClass persistentClass, EntityDataAccess cacheAccessStrategy, NaturalIdDataAccess naturalIdRegionAccessStrategy, PersisterCreationContext creationContext)
Deprecated.
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description void
addDiscriminatorToInsertGroup(MutationGroupBuilder insertGroupBuilder)
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 inQueryable.getConstraintOrderedTableNameClosure()
, get the columns that define the key between the various hierarchy classes.String
getDiscriminatorAlias()
String
getDiscriminatorColumnName()
String
getDiscriminatorColumnReaders()
String
getDiscriminatorColumnReaderTemplate()
String
getDiscriminatorFormulaTemplate()
String
getDiscriminatorSQLValue()
Get the discriminator value for this particular concrete subclass, as a string that may be embedded in a select statementBasicType<?>
getDiscriminatorType()
Get the discriminator typeObject
getDiscriminatorValue()
The discriminator value which indicates this entity mappingFilterAliasGenerator
getFilterAliasGenerator(String rootAlias)
TableDetails
getIdentifierTableDetails()
Details for the table that defines the identifier column(s) for an entity hierarchy.String[]
getKeyColumns(int j)
TableDetails
getMappedTableDetails()
Details for the table this entity maps.String[]
getPropertySpaces()
Returns an array of objects that identify spaces in which properties of this entity are persisted, for instances of this class only.protected int[]
getPropertyTableNumbers()
Map<Object,String>
getSubclassByDiscriminatorValue()
@Remove String[]
getSubclassClosure()
Deprecated, for removal: This API element is subject to removal in a future version.No longer used.String
getSubclassForDiscriminatorValue(Object value)
Get the concrete subclass corresponding to the given discriminator valueString
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.protected String[]
getSubclassTableNames()
int
getSubclassTableSpan()
String
getTableName()
The table to join to.String
getTableName(int j)
int
getTableSpan()
boolean
hasDuplicateTables()
protected boolean
hasMultipleTables()
boolean
hasSkippableTables()
Whether this target defines any potentially skippable tables.protected boolean
isClassOrSuperclassJoin(int j)
protected boolean
isClassOrSuperclassTable(int j)
protected boolean
isDiscriminatorFormula()
protected boolean
isIdentifierTable(String tableExpression)
protected boolean
isInverseSubclassTable(int j)
boolean
isInverseTable(int j)
protected boolean
isNullableSubclassTable(int j)
boolean
isNullableTable(int j)
boolean
isPropertyOfTable(int property, int j)
boolean
isTableCascadeDeleteEnabled(int j)
protected boolean
needsDiscriminator()
void
pruneForSubclasses(TableGroup tableGroup, Map<String,EntityNameUse> entityNameUses)
Adapts the table group and its table reference as well as table reference joins in a way such that unnecessary tables or joins are omitted if possible, based on the given treated entity names.void
visitConstraintOrderedTables(EntityMappingType.ConstraintOrderedTableConsumer consumer)
protected void
visitMutabilityOrderedTables(org.hibernate.persister.entity.AbstractEntityPersister.MutabilityOrderedTableConsumer consumer)
Visit details about each table for this entity, using "mutability ordering".-
Methods inherited from class org.hibernate.persister.entity.AbstractEntityPersister
afterInitialize, afterReassociate, applyBaseRestrictions, applyDiscriminator, applyFilterRestrictions, applySqlSelections, applySqlSelections, applyWhereRestrictions, buildCacheEntry, buildCacheEntryHelper, buildDeleteCoordinator, buildEmbeddedAttributeMapping, buildInsertCoordinator, buildMergeCoordinator, buildMultiIdLoader, buildPluralAttributeMapping, buildSingleIdEntityLoader, buildSingularAssociationAttributeMapping, buildTableMappings, buildUpdateCoordinator, canReadFromCache, canUseReferenceCacheEntries, canWriteToCache, check, checkVersion, consumesCollectionAlias, consumesEntityAlias, containsTableReference, countSubclassProperties, createDomainResult, createPrimaryTableReference, createProxy, createRootTableGroup, createTableReferenceJoin, dehydrate, delete, determineLoaderToUse, determineTableName, determineTableNumberForColumn, disassemble, findAttributeMapping, findDeclaredAttributeMapping, findDirty, findModified, findSubPart, findSubTypesSubPart, forceVersionIncrement, forceVersionIncrement, forEachAttributeMapping, forEachAttributeMapping, forEachDisassembledJdbcValue, forEachJdbcType, forEachJdbcValue, forEachMutableTable, forEachMutableTableReverse, forEachSelectable, generateDeleteString, generateDiscriminatorMapping, generateFilterConditionAlias, generateIdentifierMapping, generateJoinPredicate, generateLocker, generateNaturalIdMapping, generateNonEncapsulatedCompositeIdentifierMapping, generateNonIdAttributeMapping, generateSelectVersionString, generateSQLDeleteStrings, generateTableAlias, generateTableReferenceJoin, generateVersionMapping, generateVersionMapping, getAttributeMapping, getAttributeMappings, getBatchSize, getBytecodeEnhancementMetadata, getCacheAccessStrategy, getCacheEntryStructure, getCascadeStyle, getClassMetadata, getCollectionKey, getConcreteProxyClass, getCurrentVersion, getDatabaseSnapshot, getDeclaredAttributeMappings, getDeleteCoordinator, getDiscriminatorAlias, getDiscriminatorMapping, getElementTypeDescriptor, getEntityEntryFactory, getEntityMetamodel, getEntityName, getEntityNameByTableNameMap, getEntityPersister, getEntityType, getFactory, getFetchable, getFetchMode, getGenerator, getIdByUniqueKey, getIdentifier, getIdentifierAliases, getIdentifierAliases, getIdentifierColumnNames, getIdentifierColumnReaders, getIdentifierColumnReaderTemplates, getIdentifierColumnSpan, getIdentifierDescriptor, getIdentifierGenerator, getIdentifierMapping, getIdentifierPropertyName, getIdentifierTableMapping, getIdentifierTableName, getIdentifierType, getIdentityInsertDelegate, getIdentitySelectString, getInsertCoordinator, getInsertGeneratedValuesProcessor, getInstrumentationMetadata, getJdbcMapping, getJdbcTypeCount, getKeyColumnNames, getKeyFetchable, getLazyLoadPlanByFetchGroup, getLazyPropertyColumnAliases, getMappedClass, getMappedJavaType, getMappedSuperclass, getMergeCoordinator, getMultiNaturalIdLoader, getName, getNaturalIdCacheAccessStrategy, getNaturalIdentifierProperties, getNaturalIdentifierSnapshot, getNaturalIdLoader, getNaturalIdMapping, getNavigableRole, getNonLazyPropertyUpdateability, getNumberOfAttributeMappings, getNumberOfDeclaredAttributeMappings, getNumberOfFetchableKeys, getNumberOfFetchables, getNumberOfKeyFetchables, getPartName, getPhysicalTableMappingForMutation, getPropertyAliases, getPropertyCascadeStyles, getPropertyCheckability, getPropertyColumnInsertable, getPropertyColumnNames, getPropertyColumnNames, getPropertyColumnSpan, getPropertyColumnUpdateable, getPropertyColumnWriters, getPropertyIndex, getPropertyInsertability, getPropertyLaziness, getPropertyNames, getPropertyNullability, getPropertySpan, getPropertyTableName, getPropertyType, getPropertyTypes, getPropertyUpdateability, getPropertyUpdateability, getPropertyValue, getPropertyValue, getPropertyValues, getPropertyValuesToInsert, getPropertyVersionability, getPrunedDiscriminatorPredicate, getQuerySpaces, getRepresentationStrategy, getRootEntityName, getRootTableAlias, getRootTableIdentifierColumnNames, getRootTableKeyColumnNames, getRootTableName, getRowIdMapping, getSelectByUniqueKeyString, getSelectByUniqueKeyString, getSingleIdLoader, getSqlAliasStem, getSQLDeleteStrings, getSQLUpdateStrings, getSqmMultiTableInsertStrategy, getSqmMultiTableMutationStrategy, getStateArrayInitialPosition, getStaticFetchableList, getSubclassColumnAliasClosure, getSubclassEntityPersister, getSubclassFormulaAliasClosure, getSubclassPropertyColumnAliases, getSubclassPropertyColumnNameClosure, getSubclassPropertyColumnNames, getSubclassPropertyColumnNames, getSubclassPropertyColumnReaderClosure, getSubclassPropertyColumnReaderTemplateClosure, getSubclassPropertyDeclarer, getSubclassPropertyFormulaTemplateClosure, getSubclassPropertyName, getSubclassPropertyNameClosure, getSubclassPropertyTableNumber, getSubclassPropertyType, getSubclassPropertyTypeClosure, getSubMappingTypes, getSuperMappingType, getTableAliasForColumn, getTableHasColumns, getTableId, getTableMapping, getTableMappings, getTableMappingsCount, getTableNames, getTableUpdateNeeded, getTargetPart, getType, getTypeDiscriminatorMetadata, getUniqueKeyLoader, getUpdateCoordinator, getUpdateGeneratedValuesProcessor, getVersion, getVersionColumnName, getVersionedTableName, getVersionGenerator, getVersionMapping, getVersionProperty, getVersionSelectString, getVersionType, hasAnySkippableTables, hasCache, hasCascadeDelete, hasCascades, hasCollectionNotReferencingPK, hasCollections, hasFormulaProperties, hasIdentifierProperty, hasInsertGeneratedProperties, hasLazyDirtyFields, hasLazyProperties, hasMutableProperties, hasNaturalIdCache, hasNaturalIdentifier, hasOwnedCollections, hasPartitionedSelectionMapping, hasProxy, hasRowId, hasSubclasses, hasSubselectLoadableCollections, hasUninitializedLazyProperties, hasUpdateGeneratedProperties, hasWhereRestrictions, implementsLifecycle, initializeEnhancedEntityUsedAsProxy, initializeLazyPropertiesFromCache, initializeLazyPropertiesFromDatastore, initializeLazyProperty, initializeLazyProperty, initPropertyPaths, initSubclassPropertyAliasesMap, insert, insert, instantiate, interpretSqmMultiTableInsertStrategy, interpretSqmMultiTableStrategy, isAbstract, isAffectedByEnabledFetchProfiles, isAffectedByEnabledFilters, isAffectedByEntityGraph, isAllNull, isAllOrDirtyOptLocking, isBatchable, isBatchLoadable, isCacheInvalidationRequired, isCollection, isDefinedOnSubclass, isDeleteCallable, isExplicitPolymorphism, isIdentifierAssignedByInsert, isInherited, isInsertCallable, isInstance, isInstrumented, isLazyPropertiesCacheable, isMultiTable, isMutable, isPhysicalDiscriminator, isPolymorphic, isPropertySelectable, isSelectable, isSelectBeforeUpdateRequired, isSharedColumn, isSubclassEntityName, isSubclassPropertyNullable, isSubclassTableIndicatedByTreatAsDeclarations, isSubclassTableSequentialSelect, isTransient, isTypeOrSuperType, isUpdateCallable, isVersioned, isVersionGeneratedBeforeExecution, isVersionGeneratedOnExecution, isVersionPropertyGenerated, isVersionPropertyInsertable, linkToSession, linkWithSubType, linkWithSuperType, load, load, load, loadByUniqueKey, loadByUniqueKey, loadEntityIdByNaturalId, lock, lock, logStaticSQL, merge, multiLoad, optimisticLockStyle, physicalTableNameForMutation, postConstruct, postInstantiate, prepareMappingModel, processInsertGeneratedProperties, processUpdateGeneratedProperties, registerAffectingFetchProfile, resetIdentifier, resolveAttributeIndexes, resolveDirtyAttributeIndexes, resolveDiscriminatorType, selectFragment, setIdentifier, setPropertyValue, setPropertyValue, setPropertyValues, shouldGetAllProperties, shouldInnerJoinSubclassTable, shouldProcessSuperMapping, substituteBrackets, toColumns, toColumns, toString, toType, uniqueKeyEntries, update, verifyHasNaturalId, visitAttributeMappings, visitDeclaredAttributeMappings, visitFetchables, visitFetchables, visitKeyFetchables, visitKeyFetchables, visitSubParts, visitSubTypeAttributeMappings, visitSuperTypeAttributeMappings
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.hibernate.metamodel.mapping.Bindable
forEachDisassembledJdbcValue, forEachDisassembledJdbcValue, forEachDisassembledJdbcValue, forEachJdbcType, forEachJdbcValue, forEachJdbcValue, forEachJdbcValue
-
Methods inherited from interface org.hibernate.metadata.ClassMetadata
getIdentifier, getIdentifier, getPropertyValuesToInsert, instantiate, setIdentifier
-
Methods inherited from interface org.hibernate.metamodel.mapping.EntityMappingType
asEntityMappingType, extractConcreteTypeStateValues, findContainingEntityMapping, findSubPart, getContributor, getJavaType, getPartMappingType, getRootEntityDescriptor, getRootPathName, getSubclassEntityNames, getSubclassId, isTypeOrSuperType, pruneForSubclasses
-
Methods inherited from interface org.hibernate.persister.entity.EntityPersister
addToCacheKey, breakDownJdbcValues, canExtractIdOutOfEntity, getEntityMappingType, getFilterAliasGenerator, getSynchronizationSpaces, getSynchronizedQuerySpaces, getValue, getValues, getVersionJavaType, load, setValue, setValues, visitQuerySpaces
-
Methods inherited from interface org.hibernate.metamodel.mapping.EntityValuedModelPart
forEachSubPart
-
Methods inherited from interface org.hibernate.sql.results.graph.FetchableContainer
getSelectableIndex, visitFetchables, visitKeyFetchables
-
Methods inherited from interface org.hibernate.metamodel.mapping.JdbcMappingContainer
getSingleJdbcMapping
-
Methods inherited from interface org.hibernate.loader.ast.spi.Loadable
isAffectedByInfluencers, isNotAffectedByInfluencers
-
Methods inherited from interface org.hibernate.metamodel.mapping.ManagedMappingType
anyRequiresAggregateColumnWriter
-
Methods inherited from interface org.hibernate.metamodel.mapping.ModelPart
areEqual, asAttributeMapping, breakDownJdbcValues, decompose, decompose, forEachSelectable, isEntityIdentifierMapping, isVirtual
-
Methods inherited from interface org.hibernate.metamodel.mapping.ModelPartContainer
findByPath, findByPath, forEachSubPart
-
Methods inherited from interface org.hibernate.sql.model.MutationTarget
getRolePath
-
Methods inherited from interface org.hibernate.persister.entity.OuterJoinLoadable
getAttributeMutationTableName
-
-
-
-
Constructor Detail
-
SingleTableEntityPersister
@Deprecated(since="6.0") public SingleTableEntityPersister(PersistentClass persistentClass, EntityDataAccess cacheAccessStrategy, NaturalIdDataAccess naturalIdRegionAccessStrategy, PersisterCreationContext creationContext) throws HibernateException
Deprecated.- Throws:
HibernateException
-
SingleTableEntityPersister
public SingleTableEntityPersister(PersistentClass persistentClass, EntityDataAccess cacheAccessStrategy, NaturalIdDataAccess naturalIdRegionAccessStrategy, RuntimeModelCreationContext creationContext) throws HibernateException
- Throws:
HibernateException
-
-
Method Detail
-
isInverseTable
public boolean isInverseTable(int j)
- Overrides:
isInverseTable
in classAbstractEntityPersister
-
isInverseSubclassTable
protected boolean isInverseSubclassTable(int j)
- Overrides:
isInverseSubclassTable
in classAbstractEntityPersister
-
getDiscriminatorColumnName
public String getDiscriminatorColumnName()
- Specified by:
getDiscriminatorColumnName
in interfaceLoadable
- Overrides:
getDiscriminatorColumnName
in classAbstractEntityPersister
- Returns:
- the column name for the discriminator as specified in the mapping.
-
getDiscriminatorColumnReaders
public String getDiscriminatorColumnReaders()
- Overrides:
getDiscriminatorColumnReaders
in classAbstractEntityPersister
-
getDiscriminatorColumnReaderTemplate
public String getDiscriminatorColumnReaderTemplate()
- Overrides:
getDiscriminatorColumnReaderTemplate
in classAbstractEntityPersister
-
getDiscriminatorFormulaTemplate
public String getDiscriminatorFormulaTemplate()
- Overrides:
getDiscriminatorFormulaTemplate
in classAbstractEntityPersister
-
getTableName
public String getTableName()
Description copied from interface:Joinable
The table to join to.
-
getDiscriminatorType
public BasicType<?> getDiscriminatorType()
Description copied from interface:Loadable
Get the discriminator type- Specified by:
getDiscriminatorType
in interfaceLoadable
- Specified by:
getDiscriminatorType
in classAbstractEntityPersister
-
getSubclassByDiscriminatorValue
public Map<Object,String> getSubclassByDiscriminatorValue()
- Specified by:
getSubclassByDiscriminatorValue
in classAbstractEntityPersister
-
getMappedTableDetails
public TableDetails getMappedTableDetails()
Description copied from interface:EntityMappingType
Details for the table this entity maps. Generally this is the same asEntityMappingType.getIdentifierTableDetails()
, though may be different for subtypes in joined andunion inheritance hierarchies
-
getIdentifierTableDetails
public TableDetails getIdentifierTableDetails()
Description copied from interface:EntityMappingType
Details for the table that defines the identifier column(s) for an entity hierarchy.
-
getDiscriminatorValue
public Object getDiscriminatorValue()
Description copied from interface:EntityMappingType
The discriminator value which indicates this entity mapping
-
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
@Deprecated(forRemoval=true) @Remove public @Remove String[] getSubclassClosure()
Deprecated, for removal: This API element is subject to removal in a future version.No longer used.
-
getSubclassForDiscriminatorValue
public String getSubclassForDiscriminatorValue(Object value)
Description copied from interface:Loadable
Get the concrete subclass corresponding to the given discriminator value
-
getPropertySpaces
public String[] 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()
- Overrides:
isDiscriminatorFormula
in classAbstractEntityPersister
-
hasDuplicateTables
public boolean hasDuplicateTables()
- Specified by:
hasDuplicateTables
in classAbstractEntityPersister
-
getTableName
public String getTableName(int j)
- Specified by:
getTableName
in classAbstractEntityPersister
-
getKeyColumns
public String[] getKeyColumns(int j)
- Specified by:
getKeyColumns
in classAbstractEntityPersister
-
isTableCascadeDeleteEnabled
public boolean isTableCascadeDeleteEnabled(int j)
- Specified by:
isTableCascadeDeleteEnabled
in classAbstractEntityPersister
-
isPropertyOfTable
public boolean isPropertyOfTable(int property, int j)
- Specified by:
isPropertyOfTable
in classAbstractEntityPersister
-
fromTableFragment
public String fromTableFragment(String name)
Description copied from interface:OuterJoinLoadable
Get the main from table fragment, given a query alias.
-
needsDiscriminator
protected boolean needsDiscriminator()
- Specified by:
needsDiscriminator
in classAbstractEntityPersister
-
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.
-
getSubclassPropertyTableNumber
protected int getSubclassPropertyTableNumber(int i)
- Specified by:
getSubclassPropertyTableNumber
in classAbstractEntityPersister
-
getTableSpan
public int getTableSpan()
- Specified by:
getTableSpan
in classAbstractEntityPersister
-
addDiscriminatorToInsertGroup
public void addDiscriminatorToInsertGroup(MutationGroupBuilder insertGroupBuilder)
- Overrides:
addDiscriminatorToInsertGroup
in classAbstractEntityPersister
-
getPropertyTableNumbers
protected int[] getPropertyTableNumbers()
- Specified by:
getPropertyTableNumbers
in classAbstractEntityPersister
-
getSubclassTableKeyColumns
protected String[] getSubclassTableKeyColumns(int j)
- Specified by:
getSubclassTableKeyColumns
in classAbstractEntityPersister
-
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 interfaceQueryable
- Specified by:
getSubclassTableName
in classAbstractEntityPersister
- Parameters:
j
- The index into the internal array.
-
getSubclassTableNames
protected String[] getSubclassTableNames()
- Specified by:
getSubclassTableNames
in classAbstractEntityPersister
-
getSubclassTableSpan
public int getSubclassTableSpan()
- Specified by:
getSubclassTableSpan
in classAbstractEntityPersister
-
isClassOrSuperclassTable
protected boolean isClassOrSuperclassTable(int j)
- Specified by:
isClassOrSuperclassTable
in classAbstractEntityPersister
-
isClassOrSuperclassJoin
protected boolean isClassOrSuperclassJoin(int j)
- Overrides:
isClassOrSuperclassJoin
in classAbstractEntityPersister
-
isNullableTable
public boolean isNullableTable(int j)
- Overrides:
isNullableTable
in classAbstractEntityPersister
-
isIdentifierTable
protected boolean isIdentifierTable(String tableExpression)
- Specified by:
isIdentifierTable
in classAbstractEntityPersister
-
hasSkippableTables
public boolean hasSkippableTables()
Description copied from interface:EntityMutationTarget
Whether this target defines any potentially skippable tables.A table is considered potentially skippable if it is defined as inverse or as optional.
- Specified by:
hasSkippableTables
in interfaceEntityMutationTarget
- Overrides:
hasSkippableTables
in classAbstractEntityPersister
- See Also:
Table.inverse()
,Table.optional()
-
isNullableSubclassTable
protected boolean isNullableSubclassTable(int j)
- Overrides:
isNullableSubclassTable
in classAbstractEntityPersister
-
hasMultipleTables
protected boolean hasMultipleTables()
- Overrides:
hasMultipleTables
in classAbstractEntityPersister
-
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 inQueryable.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 ;)
-
getFilterAliasGenerator
public FilterAliasGenerator getFilterAliasGenerator(String rootAlias)
-
pruneForSubclasses
public void pruneForSubclasses(TableGroup tableGroup, Map<String,EntityNameUse> entityNameUses)
Description copied from interface:EntityMappingType
Adapts the table group and its table reference as well as table reference joins in a way such that unnecessary tables or joins are omitted if possible, based on the given treated entity names.The goal is to e.g. remove join inheritance "branches" or union selects that are impossible.
Consider the following example:
class BaseEntity {} class Sub1 extends BaseEntity {} class Sub1Sub1 extends Sub1 {} class Sub1Sub2 extends Sub1 {} class Sub2 extends BaseEntity {} class Sub2Sub1 extends Sub2 {} class Sub2Sub2 extends Sub2 {}
If the
treatedEntityNames
only containsSub1
or any of its subtypes, this means thatSub2
and all subtypes are impossible, thus the joins/selects for these types shall be omitted in the given table group.- Parameters:
tableGroup
- The table group to prune subclass tables forentityNameUses
- The entity names under which a table group was used.
-
visitConstraintOrderedTables
public void visitConstraintOrderedTables(EntityMappingType.ConstraintOrderedTableConsumer consumer)
-
visitMutabilityOrderedTables
protected void visitMutabilityOrderedTables(org.hibernate.persister.entity.AbstractEntityPersister.MutabilityOrderedTableConsumer consumer)
Description copied from class:AbstractEntityPersister
Visit details about each table for this entity, using "mutability ordering". When inserting rows, the order we go through the tables to avoid foreign key problems among the entity's group of tables.Used while building the table mapping descriptors for each table.
- Specified by:
visitMutabilityOrderedTables
in classAbstractEntityPersister
- See Also:
AbstractEntityPersister.forEachMutableTable(java.util.function.Consumer<org.hibernate.persister.entity.mutation.EntityTableMapping>)
,AbstractEntityPersister.forEachMutableTableReverse(java.util.function.Consumer<org.hibernate.persister.entity.mutation.EntityTableMapping>)
-
getDiscriminatorAlias
public String getDiscriminatorAlias()
- Overrides:
getDiscriminatorAlias
in classAbstractEntityPersister
-
-