类 JoinedSubclassEntityPersister
- java.lang.Object
-
- org.hibernate.persister.entity.AbstractEntityPersister
-
- org.hibernate.persister.entity.JoinedSubclassEntityPersister
-
- 所有已实现的接口:
LazyPropertyInitializer,PostInsertIdentityPersister,ClassMetadata,EntityPersister,Joinable,Loadable,Lockable,OuterJoinLoadable,PropertyMapping,Queryable,SQLLoadable,UniqueKeyLoadable,AttributeSource,EntityDefinition
public class JoinedSubclassEntityPersister extends AbstractEntityPersister
An EntityPersister implementing the normalized "table-per-subclass" mapping strategy- 作者:
- Gavin King
-
-
嵌套类概要
-
从类继承的嵌套类/接口 org.hibernate.persister.entity.AbstractEntityPersister
AbstractEntityPersister.CacheEntryHelper, AbstractEntityPersister.InclusionChecker
-
从接口继承的嵌套类/接口 org.hibernate.bytecode.enhance.spi.LazyPropertyInitializer
LazyPropertyInitializer.InterceptorImplementor
-
从接口继承的嵌套类/接口 org.hibernate.persister.entity.Queryable
Queryable.Declarer
-
-
字段概要
-
从类继承的字段 org.hibernate.persister.entity.AbstractEntityPersister
batchSize, customSQLDelete, customSQLInsert, customSQLUpdate, deleteCallable, deleteResultCheckStyles, ENTITY_CLASS, insertCallable, insertResultCheckStyles, propertyMapping, rowIdName, updateCallable, updateResultCheckStyles
-
从接口继承的字段 org.hibernate.persister.entity.EntityPersister
ENTITY_ID
-
从接口继承的字段 org.hibernate.bytecode.enhance.spi.LazyPropertyInitializer
UNFETCHED_PROPERTY
-
从接口继承的字段 org.hibernate.persister.entity.Loadable
ROWID_ALIAS
-
-
构造器概要
构造器 构造器 说明 JoinedSubclassEntityPersister(PersistentClass persistentClass, EntityDataAccess cacheAccessStrategy, NaturalIdDataAccess naturalIdRegionAccessStrategy, PersisterCreationContext creationContext)
-
方法概要
所有方法 实例方法 具体方法 修饰符和类型 方法 说明 protected voidaddDiscriminatorToInsert(Insert insert)voidaddDiscriminatorToSelect(SelectFragment select, String name, String suffix)booleancanOmitSuperclassTableJoin()If true, persister can omit superclass tables during joining if they are not needed in the query.intdetermineTableNumberForColumn(String columnName)protected StringfilterFragment(String alias)protected StringfilterFragment(String alias, Set<String> treatAsDeclarations)StringfromTableFragment(String alias)Get the main from table fragment, given a query alias.StringgenerateFilterConditionAlias(String rootAlias)The alias used for any filter conditions (mapped where-fragments or enabled-filters).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.StringgetDiscriminatorAlias()StringgetDiscriminatorColumnName()StringgetDiscriminatorColumnReaders()StringgetDiscriminatorColumnReaderTemplate()StringgetDiscriminatorSQLValue()Get the discriminator value for this particular concrete subclass, as a string that may be embedded in a select statementTypegetDiscriminatorType()Get the discriminator typeObjectgetDiscriminatorValue()Get the discriminator valueFilterAliasGeneratorgetFilterAliasGenerator(String rootAlias)String[]getIdentifierColumnNames()Get the names of columns used to persist the identifierString[]getIdentifierColumnReaders()String[]getIdentifierColumnReaderTemplates()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.StringgetPropertyTableName(String propertyName)Get the table name for the given property pathprotected int[]getPropertyTableNumbers()protected int[]getPropertyTableNumbersInSelect()StringgetRootTableAlias(String drivingAlias)Get the SQL alias this persister would use for the root table given the passed driving alias.StringgetRootTableName()Locks are always applied to the "root table".protected int[]getSubclassColumnTableNumberClosure()StringgetSubclassForDiscriminatorValue(Object value)Get the concrete subclass corresponding to the given discriminator valueprotected int[]getSubclassFormulaTableNumberClosure()Queryable.DeclarergetSubclassPropertyDeclarer(String propertyPath)Determine whether the given property is declared by our mapped class, our super class, or one of our subclasses...StringgetSubclassPropertyTableName(int i)Return the table name used to persist the numbered property of the class or a subclass.protected intgetSubclassPropertyTableNumber(int i)protected String[]getSubclassTableKeyColumns(int j)StringgetSubclassTableName(int j)Get the name of the table with the given index from the internal array.intgetSubclassTableSpan()StringgetTableName()The table to join to.StringgetTableName(int j)intgetTableSpan()protected booleanisClassOrSuperclassTable(int j)protected booleanisInverseSubclassTable(int j)booleanisInverseTable(int j)booleanisMultiTable()Is the inheritance hierarchy described by this persister contained across multiple tables?protected booleanisNullableSubclassTable(int j)booleanisNullableTable(int j)booleanisPropertyOfTable(int property, int j)protected booleanisSubclassTableIndicatedByTreatAsDeclarations(int subclassTableNumber, Set<String> treatAsDeclarations)protected booleanisSubclassTableLazy(int j)protected booleanisSubclassTableSequentialSelect(int j)booleanisTableCascadeDeleteEnabled(int j)String[]toColumns(String alias, String propertyName)Obtain aliased column/formula fragments for the specified property path.-
从类继承的方法 org.hibernate.persister.entity.AbstractEntityPersister
afterInitialize, afterReassociate, buildCacheEntry, buildCacheEntryHelper, canExtractIdOutOfEntity, canReadFromCache, canUseReferenceCacheEntries, canWriteToCache, check, checkVersion, concretePropertySelectFragment, concretePropertySelectFragment, concretePropertySelectFragmentSansLeadingComma, consumesCollectionAlias, consumesEntityAlias, countSubclassProperties, createDelete, createEntityLoader, createEntityLoader, createEntityLoader, createFrom, createInsert, createJoin, createJoin, createJoin, createLoaders, createProxy, createQueryLoader, createSelect, createUniqueKeyLoaders, createUpdate, createWhereByKey, dehydrate, dehydrate, delete, delete, determineSubclassTableJoinType, determineSubclassTableJoinType, determineTableName, doPostInstantiate, filterFragment, filterFragment, findDirty, findModified, forceVersionIncrement, fromJoinFragment, fromJoinFragment, fromJoinFragment, generateDeleteString, generateEntityDefinition, generateIdByUniqueKeySelectString, generateIdentityInsertString, generateInsertGeneratedValuesSelectString, generateInsertString, generateInsertString, generateInsertString, generateLazySelectStringsByFetchGroup, generateLocker, generateSelectVersionString, generateSnapshotSelectString, generateTableAlias, generateUpdateGeneratedValuesSelectString, generateUpdateString, generateUpdateString, getAppropriateLoader, getAttributes, getBytecodeEnhancementMetadata, getCacheAccessStrategy, getCacheEntryStructure, getCascadeStyle, getClassMetadata, getCollectionKey, getConcreteProxyClass, getCurrentVersion, getDatabaseSnapshot, getDeleteResultCheckStyles, getDiscriminatorAlias, getDiscriminatorFormulaTemplate, getEntityEntryFactory, getEntityKeyDefinition, getEntityMetamodel, getEntityMode, getEntityName, getEntityPersister, getEntityTuplizer, getEntityType, getFactory, getFetchMode, getIdByUniqueKey, getIdentifier, getIdentifier, getIdentifierAliases, getIdentifierAliases, getIdentifierColumnSpan, getIdentifierGenerator, getIdentifierPropertyName, getIdentifierType, getIdentitySelectString, getInsertResultCheckStyles, 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, getRootTableIdentifierColumnNames, getRootTableKeyColumnNames, 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, getSubclassPropertyFormulaTemplateClosure, getSubclassPropertyName, getSubclassPropertyNameClosure, getSubclassPropertySubclassNameClosure, getSubclassPropertyTableNumber, getSubclassPropertyType, getSubclassPropertyTypeClosure, getTableAliasForColumn, getTableId, getTableNames, getTableUpdateNeeded, getTemplateFromString, getType, getTypeDiscriminatorMetadata, getUpdateResultCheckStyles, 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, initializeEnhancedEntityUsedAsProxy, initializeLazyProperty, initLockers, initPropertyPaths, initSubclassPropertyAliasesMap, insert, insert, insert, insert, instantiate, isAbstract, isAllNull, isBatchable, isBatchLoadable, isCacheInvalidationRequired, isClassOrSuperclassJoin, isCollection, isDefinedOnSubclass, isDeleteCallable, isExplicitPolymorphism, isIdentifierAssignedByInsert, isInherited, isInsertCallable, isInstance, isInstrumented, isLazyPropertiesCacheable, isModifiableEntity, isMutable, isNaturalIdNonNullable, isPolymorphic, isSelectBeforeUpdateRequired, isSubclassEntityName, isSubclassPropertyDeferred, isSubclassPropertyNullable, isTransient, isUpdateCallable, isVersioned, isVersionPropertyGenerated, isVersionPropertyInsertable, load, load, load, loadByUniqueKey, loadEntityIdByNaturalId, lock, lock, logStaticSQL, multiLoad, oneToManyFilterFragment, oneToManyFilterFragment, optimisticLockStyle, postConstruct, postInstantiate, processInsertGeneratedProperties, processUpdateGeneratedProperties, propertySelectFragment, propertySelectFragmentFragment, registerAffectingFetchProfile, renderSelect, resetIdentifier, resolveAttributeIndexes, selectFragment, selectFragment, setIdentifier, setPropertyValue, setPropertyValue, setPropertyValues, toColumns, toColumns, toString, toType, update, update, updateOrInsert, useDynamicInsert, useDynamicUpdate, useGetGeneratedKeys, useInsertSelectIdentity, whereJoinFragment, whereJoinFragment
-
从类继承的方法 java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
从接口继承的方法 org.hibernate.metadata.ClassMetadata
getIdentifier, getPropertyValuesToInsert, instantiate, setIdentifier
-
从接口继承的方法 org.hibernate.persister.entity.EntityPersister
canIdentityInsertBeDelayed, load
-
-
-
-
构造器详细资料
-
JoinedSubclassEntityPersister
public JoinedSubclassEntityPersister(PersistentClass persistentClass, EntityDataAccess cacheAccessStrategy, NaturalIdDataAccess naturalIdRegionAccessStrategy, PersisterCreationContext creationContext) throws HibernateException
-
-
方法详细资料
-
isNullableTable
public boolean isNullableTable(int j)
-
isInverseTable
public boolean isInverseTable(int j)
-
isSubclassTableSequentialSelect
protected boolean isSubclassTableSequentialSelect(int j)
-
getSubclassPropertyTableName
public String getSubclassPropertyTableName(int i)
从接口复制的说明:OuterJoinLoadableReturn the table name used to persist the numbered property of the class or a subclass.
-
isInverseSubclassTable
protected boolean isInverseSubclassTable(int j)
-
isNullableSubclassTable
protected boolean isNullableSubclassTable(int j)
-
getDiscriminatorType
public Type getDiscriminatorType()
从接口复制的说明:LoadableGet the discriminator type
-
getDiscriminatorValue
public Object getDiscriminatorValue()
从接口复制的说明:LoadableGet the discriminator value
-
getDiscriminatorSQLValue
public String getDiscriminatorSQLValue()
从接口复制的说明:QueryableGet the discriminator value for this particular concrete subclass, as a string that may be embedded in a select statement
-
getDiscriminatorColumnName
public String getDiscriminatorColumnName()
- 指定者:
getDiscriminatorColumnName在接口中Loadable- 覆盖:
getDiscriminatorColumnName在类中AbstractEntityPersister- 返回:
- the column name for the discriminator as specified in the mapping.
-
getDiscriminatorColumnReaders
public String getDiscriminatorColumnReaders()
-
getDiscriminatorColumnReaderTemplate
public String getDiscriminatorColumnReaderTemplate()
-
getDiscriminatorAlias
public String getDiscriminatorAlias()
-
getSubclassForDiscriminatorValue
public String getSubclassForDiscriminatorValue(Object value)
从接口复制的说明:LoadableGet the concrete subclass corresponding to the given discriminator value
-
addDiscriminatorToInsert
protected void addDiscriminatorToInsert(Insert insert)
-
getPropertySpaces
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. 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).- 返回:
- The property spaces.
-
getTableName
public String getTableName(int j)
- 指定者:
getTableName在类中AbstractEntityPersister
-
getKeyColumns
public String[] getKeyColumns(int j)
- 指定者:
getKeyColumns在类中AbstractEntityPersister
-
isTableCascadeDeleteEnabled
public boolean isTableCascadeDeleteEnabled(int j)
-
isPropertyOfTable
public boolean isPropertyOfTable(int property, int j)- 指定者:
isPropertyOfTable在类中AbstractEntityPersister
-
fromTableFragment
public String fromTableFragment(String alias)
从接口复制的说明:OuterJoinLoadableGet the main from table fragment, given a query alias.
-
addDiscriminatorToSelect
public void addDiscriminatorToSelect(SelectFragment select, String name, String suffix)
-
filterFragment
protected String filterFragment(String alias)
- 指定者:
filterFragment在类中AbstractEntityPersister
-
filterFragment
protected String filterFragment(String alias, Set<String> treatAsDeclarations)
- 指定者:
filterFragment在类中AbstractEntityPersister
-
generateFilterConditionAlias
public String generateFilterConditionAlias(String rootAlias)
从接口复制的说明:QueryableThe alias used for any filter conditions (mapped where-fragments or enabled-filters). This may or may not be different from the root alias depending upon the inheritance mapping strategy.- 指定者:
generateFilterConditionAlias在接口中Queryable- 覆盖:
generateFilterConditionAlias在类中AbstractEntityPersister- 参数:
rootAlias- The root alias- 返回:
- The alias used for "filter conditions" within the where clause.
-
getIdentifierColumnNames
public String[] getIdentifierColumnNames()
从接口复制的说明:LoadableGet the names of columns used to persist the identifier- 指定者:
getIdentifierColumnNames在接口中Loadable- 指定者:
getIdentifierColumnNames在接口中PostInsertIdentityPersister- 指定者:
getIdentifierColumnNames在接口中Queryable- 覆盖:
getIdentifierColumnNames在类中AbstractEntityPersister
-
getIdentifierColumnReaderTemplates
public String[] getIdentifierColumnReaderTemplates()
-
getIdentifierColumnReaders
public String[] getIdentifierColumnReaders()
-
toColumns
public String[] toColumns(String alias, String propertyName) throws QueryException
从类复制的说明:AbstractEntityPersisterObtain aliased column/formula fragments for the specified property path. Warning: When there are duplicated property names in the subclasses then this method may return the wrong results. To ensure correct results, this method should only be used when this is the concrete EntityPersister (since the concrete EntityPersister cannot have duplicated property names).- 指定者:
toColumns在接口中PropertyMapping- 覆盖:
toColumns在类中AbstractEntityPersister- 抛出:
QueryException
-
getPropertyTableNumbersInSelect
protected int[] getPropertyTableNumbersInSelect()
-
getSubclassPropertyTableNumber
protected int getSubclassPropertyTableNumber(int i)
-
getTableSpan
public int getTableSpan()
- 指定者:
getTableSpan在类中AbstractEntityPersister
-
isMultiTable
public boolean isMultiTable()
从接口复制的说明:QueryableIs the inheritance hierarchy described by this persister contained across multiple tables?- 指定者:
isMultiTable在接口中Queryable- 覆盖:
isMultiTable在类中AbstractEntityPersister- 返回:
- True if the inheritance hierarchy is spread across multiple tables; false otherwise.
-
getSubclassColumnTableNumberClosure
protected int[] getSubclassColumnTableNumberClosure()
-
getSubclassFormulaTableNumberClosure
protected int[] getSubclassFormulaTableNumberClosure()
-
getPropertyTableNumbers
protected int[] getPropertyTableNumbers()
-
getSubclassTableKeyColumns
protected String[] getSubclassTableKeyColumns(int j)
-
getSubclassTableName
public String getSubclassTableName(int j)
从接口复制的说明:QueryableGet the name of the table with the given index from the internal array.- 指定者:
getSubclassTableName在接口中Queryable- 指定者:
getSubclassTableName在类中AbstractEntityPersister- 参数:
j- The index into the internal array.
-
getSubclassTableSpan
public int getSubclassTableSpan()
-
isSubclassTableLazy
protected boolean isSubclassTableLazy(int j)
-
isClassOrSuperclassTable
protected boolean isClassOrSuperclassTable(int j)
-
isSubclassTableIndicatedByTreatAsDeclarations
protected boolean isSubclassTableIndicatedByTreatAsDeclarations(int subclassTableNumber, Set<String> treatAsDeclarations)
-
getPropertyTableName
public String getPropertyTableName(String propertyName)
从接口复制的说明:OuterJoinLoadableGet the table name for the given property path
-
getConstraintOrderedTableNameClosure
public 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.- 返回:
- The ordered array of table names.
-
getContraintOrderedTableKeyColumnClosure
public String[][] getContraintOrderedTableKeyColumnClosure()
从接口复制的说明:QueryableFor 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 inQueryable.getConstraintOrderedTableNameClosure(). The second dimension should have the same length across all the elements in the first dimension. If not, that would be a problem ;)
-
getRootTableName
public String getRootTableName()
从接口复制的说明:LockableLocks are always applied to the "root table".- 指定者:
getRootTableName在接口中Lockable- 覆盖:
getRootTableName在类中AbstractEntityPersister- 返回:
- The root table name
-
getRootTableAlias
public String getRootTableAlias(String drivingAlias)
从接口复制的说明:LockableGet the SQL alias this persister would use for the root table given the passed driving alias.- 指定者:
getRootTableAlias在接口中Lockable- 覆盖:
getRootTableAlias在类中AbstractEntityPersister- 参数:
drivingAlias- The driving alias; or the alias for the table mapped by this persister in the hierarchy.- 返回:
- The root table alias.
-
getSubclassPropertyDeclarer
public Queryable.Declarer getSubclassPropertyDeclarer(String propertyPath)
从接口复制的说明:QueryableDetermine whether the given property is declared by our mapped class, our super class, or one of our subclasses... Note: the method is called 'subclass property...' simply for consistency sake (e.g.Queryable.getSubclassPropertyTableNumber(java.lang.String)- 指定者:
getSubclassPropertyDeclarer在接口中Queryable- 覆盖:
getSubclassPropertyDeclarer在类中AbstractEntityPersister- 参数:
propertyPath- The property name.- 返回:
- The property declarer
-
determineTableNumberForColumn
public int determineTableNumberForColumn(String columnName)
-
getFilterAliasGenerator
public FilterAliasGenerator getFilterAliasGenerator(String rootAlias)
-
canOmitSuperclassTableJoin
public boolean canOmitSuperclassTableJoin()
从类复制的说明:AbstractEntityPersisterIf true, persister can omit superclass tables during joining if they are not needed in the query.- 覆盖:
canOmitSuperclassTableJoin在类中AbstractEntityPersister- 返回:
- true if the persister can do it
-
-