|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.hibernate.persister.entity.AbstractEntityPersister
org.hibernate.persister.entity.UnionSubclassEntityPersister
public class UnionSubclassEntityPersister
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.persister.entity.Loadable |
|---|
ROWID_ALIAS |
| Fields inherited from interface org.hibernate.persister.entity.EntityPersister |
|---|
ENTITY_ID |
| 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.persister.entity.Loadable |
|---|
ROWID_ALIAS |
| Fields inherited from interface org.hibernate.persister.entity.EntityPersister |
|---|
ENTITY_ID |
| Fields inherited from interface org.hibernate.intercept.LazyPropertyInitializer |
|---|
UNFETCHED_PROPERTY |
| Constructor Summary | |
|---|---|
UnionSubclassEntityPersister(PersistentClass persistentClass,
EntityRegionAccessStrategy cacheAccessStrategy,
SessionFactoryImplementor factory,
Mapping mapping)
|
|
| Method Summary | |
|---|---|
protected void |
addDiscriminatorToSelect(SelectFragment select,
java.lang.String name,
java.lang.String suffix)
|
java.lang.String |
filterFragment(java.lang.String name)
|
java.lang.String |
fromTableFragment(java.lang.String name)
Get the main from table fragment, given a query alias. |
protected java.lang.String |
generateSelectString(LockMode lockMode)
Generate the SQL that selects a row by id |
protected java.lang.String |
generateSubquery(PersistentClass model,
Mapping mapping)
|
java.lang.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 contraint violations. |
java.lang.String[][] |
getContraintOrderedTableKeyColumnClosure()
For each table specified in Queryable.getConstraintOrderedTableNameClosure(), get
the columns that define the key between the various hierarchy classes. |
protected java.lang.String |
getDiscriminatorFormula()
|
java.lang.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 |
protected java.lang.String[] |
getKeyColumns(int j)
|
java.io.Serializable[] |
getPropertySpaces()
Returns an array of objects that identify spaces in which properties of this entity are persisted, for instances of this class only. |
java.lang.String |
getPropertyTableName(java.lang.String propertyName)
Get the table name for the given property path |
protected int[] |
getPropertyTableNumbers()
|
protected int[] |
getPropertyTableNumbersInSelect()
|
java.io.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. |
java.lang.String[] |
getSubclassClosure()
|
protected int[] |
getSubclassColumnTableNumberClosure()
|
java.lang.String |
getSubclassForDiscriminatorValue(java.lang.Object value)
Get the concrete subclass corresponding to the given discriminator value |
protected int[] |
getSubclassFormulaTableNumberClosure()
|
java.lang.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(java.lang.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 java.lang.String[] |
getSubclassTableKeyColumns(int j)
|
java.lang.String |
getSubclassTableName(int j)
Get the name of the table with the given index from the internal array. |
int |
getSubclassTableSpan()
|
protected boolean[] |
getTableHasColumns()
|
java.lang.String |
getTableName()
The table to join to. |
protected java.lang.String |
getTableName(int j)
|
int |
getTableSpan()
|
protected boolean |
isClassOrSuperclassTable(int j)
|
protected boolean |
isDiscriminatorFormula()
|
boolean |
isMultiTable()
Is the inheritence 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 java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Constructor Detail |
|---|
public UnionSubclassEntityPersister(PersistentClass persistentClass,
EntityRegionAccessStrategy cacheAccessStrategy,
SessionFactoryImplementor factory,
Mapping mapping)
throws HibernateException
HibernateException| Method Detail |
|---|
public java.io.Serializable[] getQuerySpaces()
EntityPersisterEntityPersister.getPropertySpaces(), except that here we include subclass
entity spaces.
getQuerySpaces in interface EntityPersistergetQuerySpaces in class AbstractEntityPersisterpublic java.lang.String getTableName()
Joinable
public Type getDiscriminatorType()
Loadable
public java.lang.String getDiscriminatorSQLValue()
Queryable
public java.lang.String[] getSubclassClosure()
public java.lang.String getSubclassForDiscriminatorValue(java.lang.Object value)
Loadable
public java.io.Serializable[] getPropertySpaces()
EntityPersister
protected boolean isDiscriminatorFormula()
protected java.lang.String generateSelectString(LockMode lockMode)
protected java.lang.String getDiscriminatorFormula()
protected java.lang.String getTableName(int j)
getTableName in class AbstractEntityPersisterprotected java.lang.String[] getKeyColumns(int j)
getKeyColumns in class AbstractEntityPersisterprotected boolean isTableCascadeDeleteEnabled(int j)
isTableCascadeDeleteEnabled in class AbstractEntityPersister
protected boolean isPropertyOfTable(int property,
int j)
isPropertyOfTable in class AbstractEntityPersisterpublic java.lang.String fromTableFragment(java.lang.String name)
OuterJoinLoadable
public java.lang.String filterFragment(java.lang.String name)
filterFragment in class AbstractEntityPersisterpublic java.lang.String getSubclassPropertyTableName(int i)
OuterJoinLoadable
protected void addDiscriminatorToSelect(SelectFragment select,
java.lang.String name,
java.lang.String suffix)
addDiscriminatorToSelect in class AbstractEntityPersisterprotected int[] getPropertyTableNumbersInSelect()
getPropertyTableNumbersInSelect in class AbstractEntityPersisterprotected int getSubclassPropertyTableNumber(int i)
getSubclassPropertyTableNumber in class AbstractEntityPersisterpublic int getSubclassPropertyTableNumber(java.lang.String propertyName)
AbstractEntityPersister
getSubclassPropertyTableNumber in interface QueryablegetSubclassPropertyTableNumber in class AbstractEntityPersisterpropertyName - The name of the property.
public boolean isMultiTable()
Queryable
isMultiTable in interface QueryableisMultiTable in class AbstractEntityPersisterpublic int getTableSpan()
getTableSpan in class AbstractEntityPersisterprotected int[] getSubclassColumnTableNumberClosure()
getSubclassColumnTableNumberClosure in class AbstractEntityPersisterprotected int[] getSubclassFormulaTableNumberClosure()
getSubclassFormulaTableNumberClosure in class AbstractEntityPersisterprotected boolean[] getTableHasColumns()
protected int[] getPropertyTableNumbers()
getPropertyTableNumbers in class AbstractEntityPersister
protected java.lang.String generateSubquery(PersistentClass model,
Mapping mapping)
protected java.lang.String[] getSubclassTableKeyColumns(int j)
getSubclassTableKeyColumns in class AbstractEntityPersisterpublic java.lang.String getSubclassTableName(int j)
Queryable
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 AbstractEntityPersisterpublic java.lang.String getPropertyTableName(java.lang.String propertyName)
OuterJoinLoadable
public java.lang.String[] getConstraintOrderedTableNameClosure()
Queryable
public java.lang.String[][] getContraintOrderedTableKeyColumnClosure()
QueryableQueryable.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'd be a problem ;)
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||