public class InheritancePolicy extends CoreInheritancePolicy<org.eclipse.persistence.internal.sessions.AbstractRecord,org.eclipse.persistence.internal.sessions.AbstractSession,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField> implements java.io.Serializable, java.lang.Cloneable
Purpose: Allows customization of an object's inheritance. The primary supported inheritance model uses a class type indicator column in the table that stores the object's class type. The class-to-type mapping is specified on this policy. The full class name can also be used for the indicator instead of the mapping.
Each subclass can either share their parents table, or in addition add their own table(s).
For legacy models a customized inheritance class-extractor can be provided. This allows Java code to be used to compute the class type to use for a row. When this customized inheritance model is used an only-instances and with-all-subclasses filter expression may be required for concrete and branch querying.
Modifier and Type | Field and Description |
---|---|
protected java.util.List<java.lang.Object> |
allChildClassIndicators |
protected java.util.Vector |
allTables |
protected java.util.List<ClassDescriptor> |
childDescriptors |
protected Expression |
childrenJoinExpression |
protected java.util.List<org.eclipse.persistence.internal.helper.DatabaseTable> |
childrenTables |
protected java.util.Map<org.eclipse.persistence.internal.helper.DatabaseTable,Expression> |
childrenTablesJoinExpressions |
protected ClassExtractor |
classExtractor |
protected java.lang.String |
classExtractorName
Allow for class extraction method to be specified.
|
protected org.eclipse.persistence.internal.helper.DatabaseField |
classIndicatorField |
protected java.util.Map |
classIndicatorMapping |
protected java.util.Map |
classNameIndicatorMapping |
protected boolean |
describesNonPersistentSubclasses |
protected ClassDescriptor |
descriptor |
protected boolean |
isJoinedStrategy |
protected Expression |
onlyInstancesExpression |
protected java.lang.Class |
parentClass |
protected java.lang.String |
parentClassName |
protected ClassDescriptor |
parentDescriptor |
protected org.eclipse.persistence.internal.helper.DatabaseTable |
readAllSubclassesView |
protected ClassDescriptor |
rootParentDescriptor
PERF: Cache root descriptor.
|
protected boolean |
shouldAlwaysUseOuterJoin |
protected boolean |
shouldOuterJoinSubclasses
Define if an outer join should be used to read subclasses.
|
protected java.lang.Boolean |
shouldReadSubclasses |
protected boolean |
shouldUseClassNameAsIndicator |
protected boolean |
useDescriptorsToValidateInheritedObjects |
protected Expression |
withAllSubclassesExpression |
Constructor and Description |
---|
InheritancePolicy()
INTERNAL:
Create a new policy.
|
InheritancePolicy(ClassDescriptor descriptor)
INTERNAL:
Create a new policy.
|
Modifier and Type | Method and Description |
---|---|
void |
addChildDescriptor(ClassDescriptor childDescriptor)
INTERNAL:
Add child descriptor to the parent descriptor.
|
protected void |
addChildTableJoinExpression(org.eclipse.persistence.internal.helper.DatabaseTable table,
Expression expression)
INTERNAL:
childrenTablesJoinExpressions, childrenTables, allTables and childrenJoinExpression
are created simultaneously and kept in sync.
|
void |
addChildTableJoinExpressionToAllParents(org.eclipse.persistence.internal.helper.DatabaseTable table,
Expression expression)
INTERNAL:
call addChildTableJoinExpression on all parents
|
void |
addClassIndicator(java.lang.Class childClass,
java.lang.Object typeValue)
PUBLIC:
Add a class indicator for the root classes subclass.
|
void |
addClassIndicatorFieldToInsertRow(org.eclipse.persistence.internal.sessions.AbstractRecord databaseRow)
INTERNAL:
Add abstract class indicator information to the database row.
|
void |
addClassIndicatorFieldToRow(org.eclipse.persistence.internal.sessions.AbstractRecord databaseRow)
INTERNAL:
Add abstract class indicator information to the database row.
|
protected void |
addClassIndicatorTypeToParent(java.lang.Object indicator)
INTERNAL:
Post initialize the child descriptors
|
void |
addClassNameIndicator(java.lang.String childClassName,
java.lang.Object typeValue)
INTERNAL:
Add the class name reference by class name, used by the MW.
|
protected void |
addFieldsToParent(java.util.Vector fields)
INTERNAL:
Recursively adds fields to all the parents
|
void |
appendWithAllSubclassesExpression(org.eclipse.persistence.internal.expressions.SQLSelectStatement selectStatement)
INTERNAL:
Append the branch with all subclasses expression to the statement.
|
org.eclipse.persistence.internal.expressions.SQLSelectStatement |
buildClassIndicatorSelectStatement(ObjectLevelReadQuery query)
INTERNAL:
Return a select statement that will be used to query the class indicators required to query.
|
org.eclipse.persistence.internal.expressions.SQLSelectStatement |
buildViewSelectStatement(ObjectLevelReadQuery query)
INTERNAL:
Build a select statement for all subclasses on the view using the same
selection criteria as the query.
|
java.lang.Class |
classFromRow(org.eclipse.persistence.internal.sessions.AbstractRecord rowFromDatabase,
org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL:
This method is invoked only for the abstract descriptors.
|
java.lang.Class |
classFromValue(java.lang.Object classFieldValue,
org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL:
This method is used to turn the a raw database field value classFieldValue into a Class object.
|
java.lang.Object |
clone()
INTERNAL:
Clone the policy
|
void |
convertClassNamesToClasses(java.lang.ClassLoader classLoader)
INTERNAL:
Convert all the class-name-based settings in this InheritancePolicy to actual class-based settings.
|
protected java.lang.Class |
convertClassNameToClass(java.lang.String className,
java.lang.ClassLoader classLoader)
INTERNAL:
Convert the given className to an actual class.
|
void |
dontReadSubclassesOnQueries()
PUBLIC:
Set the descriptor to only read instance of itself when queried.
|
void |
dontUseClassNameAsIndicator()
PUBLIC:
Set the descriptor not to use the class' full name as the indicator.
|
protected java.util.List<java.lang.Object> |
getAllChildClassIndicators()
INTERNAL:
Stores class indicators for all child and children's children.
|
java.util.List<ClassDescriptor> |
getAllChildDescriptors()
INTERNAL:
Returns all the child descriptors, even descriptors for subclasses of
subclasses.
|
protected java.util.List<ClassDescriptor> |
getAllChildDescriptors(java.util.List<ClassDescriptor> allChildDescriptors)
INTERNAL:
Recursive subroutine of getAllChildDescriptors.
|
java.util.Vector |
getAllTables()
INTERNAL:
all tables for reference class plus childrenTables
|
java.util.List<ClassDescriptor> |
getChildDescriptors()
INTERNAL:
Return all the immediate child descriptors.
|
Expression |
getChildrenJoinExpression()
INTERNAL:
all expressions from childrenTablesJoinExpressions ANDed together
|
java.util.List<org.eclipse.persistence.internal.helper.DatabaseTable> |
getChildrenTables()
INTERNAL:
if reads subclasses, all tables for all read subclasses (indirect included).
|
java.util.Map<org.eclipse.persistence.internal.helper.DatabaseTable,Expression> |
getChildrenTablesJoinExpressions()
INTERNAL:
join expression for each child table, keyed by the table
|
protected java.lang.reflect.Method |
getClassExtractionMethod()
INTERNAL:
Return all the classExtractionMethod
|
java.lang.String |
getClassExtractionMethodName()
ADVANCED:
A class extraction method can be registered with the descriptor to override the default inheritance mechanism.
|
ClassExtractor |
getClassExtractor()
ADVANCED:
A class extractor can be registered with the descriptor to override the default inheritance mechanism.
|
java.util.Vector |
getClassIndicatorAssociations()
INTERNAL:
Return the class indicator associations for XML.
|
org.eclipse.persistence.internal.helper.DatabaseField |
getClassIndicatorField()
INTERNAL:
Returns field that the class type indicator is store when using inheritance.
|
java.lang.String |
getClassIndicatorFieldName()
PUBLIC:
Return the class indicator field name.
|
java.util.Map |
getClassIndicatorMapping()
INTERNAL:
Return the association of indicators and classes using specified ConversionManager
|
protected java.lang.Object |
getClassIndicatorValue()
INTERNAL:
Returns value of the abstract class indicator for the Java class.
|
protected java.lang.Object |
getClassIndicatorValue(java.lang.Class javaClass)
INTERNAL:
Returns the indicator field value for the given class
If no abstract indicator mapping is specified, use the class name.
|
java.util.Map |
getClassNameIndicatorMapping()
INTERNAL:
Return the mapping from class name to indicator, used by MW.
|
boolean |
getDescribesNonPersistentSubclasses()
ADVANCED:
Determines whether the descriptors using this inheritance policy
should be used as descriptors for subclasses of the classes they
describe if those subclasses do not have their own descriptor
e.g.
|
ClassDescriptor |
getDescriptor()
INTERNAL:
Returns the descriptor which the policy belongs to.
|
ClassDescriptor |
getDescriptor(java.lang.Class theClass)
INTERNAL:
Returns descriptor corresponding to the class owning the policy or its subclass - otherwise null.
|
Expression |
getOnlyInstancesExpression()
ADVANCED:
Return the 'only instances expression'.
|
java.lang.Class |
getParentClass()
PUBLIC:
Return the parent class.
|
java.lang.String |
getParentClassName()
INTERNAL:
Return the parent class name.
|
ClassDescriptor |
getParentDescriptor()
INTERNAL:
Return the parent descriptor.
|
org.eclipse.persistence.internal.helper.DatabaseTable |
getReadAllSubclassesView()
INTERNAL:
The view can be used to optimize/customize the query for all subclasses where they have multiple tables.
|
java.lang.String |
getReadAllSubclassesViewName()
ADVANCED:
The view can be used to optimize/customize the query for all subclasses where they have multiple tables.
|
ClassDescriptor |
getRootParentDescriptor()
INTERNAL:
Return the root parent descriptor
|
ClassDescriptor |
getSubclassDescriptor(java.lang.Class theClass)
INTERNAL:
use aggregate in inheritance
|
boolean |
getUseDescriptorsToValidateInheritedObjects()
INTERNAL:
return if we should use the descriptor inheritance to determine
if an object can be returned from the identity map or not.
|
Expression |
getWithAllSubclassesExpression()
ADVANCED:
Return the Expression which gets all subclasses.
|
boolean |
hasChildren()
INTERNAL:
Check if descriptor has children
|
boolean |
hasClassExtractor()
INTERNAL:
|
boolean |
hasClassIndicator()
INTERNAL:
Checks if the class is involved in inheritance
|
boolean |
hasMultipleTableChild()
INTERNAL:
Return if any children of this descriptor require information from another table
not specified at the parent level.
|
boolean |
hasView()
INTERNAL:
Return if a view is used for inheritance reads.
|
void |
initialize(org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL:
Initialize the inheritance properties of the descriptor once the mappings are initialized.
|
protected void |
initializeCacheInvalidationPolicy()
INTERNAL:
Potentially override the cache invalidation behavior
|
protected void |
initializeClassExtractor(org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL:
Setup the default classExtractionMethod, or if one was specified by the user make sure it is valid.
|
protected void |
initializeOnlyInstancesExpression()
INTERNAL:
Initialize the expression to use to check the specific type field.
|
protected void |
initializeOptimisticLocking()
INTERNAL:
Potentially override the optimistic locking behavior
|
protected void |
initializeWithAllSubclassesExpression()
INTERNAL:
Initialize the expression to use for queries to the class and its subclasses.
|
boolean |
isChildDescriptor()
INTERNAL:
Check if it is a child descriptor.
|
boolean |
isJoinedStrategy()
INTERNAL:
Indicate whether a single table or joined inheritance strategy is being used.
|
boolean |
isRootParentDescriptor()
INTERNAL:
Return whether or not is root parent descriptor
|
void |
postInitialize(org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL:
Initialized the inheritance properties that cannot be initialized
until after the mappings have been.
|
void |
preInitialize(org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL:
Allow the inheritance properties of the descriptor to be initialized.
|
void |
readSubclassesOnQueries()
PUBLIC:
Set the descriptor to read instance of itself and its subclasses when queried.
|
void |
remoteInitialization(DistributedSession session)
INTERNAL:
Used to initialize a remote descriptor.
|
protected void |
removeChildren(ClassDescriptor descriptor,
java.util.Set<java.lang.Class> classes,
java.util.Set<java.lang.Class> subclasses)
Remove all of the subclasses (and so on) from the set of classes.
|
boolean |
requiresMultipleTableSubclassRead()
INTERNAL:
Return if this descriptor has children that define additional tables and needs to read them.
|
protected java.util.Vector |
selectAllRowUsingCustomMultipleTableSubclassRead(ObjectLevelReadQuery query)
INTERNAL:
Select all rows from a abstract table descriptor.
|
protected java.util.Vector |
selectAllRowUsingDefaultMultipleTableSubclassRead(ObjectLevelReadQuery query)
INTERNAL:
Select all rows from a abstract table descriptor.
|
java.util.Vector |
selectAllRowUsingMultipleTableSubclassRead(ObjectLevelReadQuery query)
INTERNAL:
Select all rows from a abstract table descriptor.
|
protected org.eclipse.persistence.internal.sessions.AbstractRecord |
selectOneRowUsingCustomMultipleTableSubclassRead(ReadObjectQuery query)
INTERNAL:
Select one rows from a abstract table descriptor.
|
protected org.eclipse.persistence.internal.sessions.AbstractRecord |
selectOneRowUsingDefaultMultipleTableSubclassRead(ReadObjectQuery query)
INTERNAL:
Select one row of any concrete subclass,
This must use two selects, the first retrieves the type field only.
|
org.eclipse.persistence.internal.sessions.AbstractRecord |
selectOneRowUsingMultipleTableSubclassRead(ReadObjectQuery query)
INTERNAL:
Select one row of any concrete subclass,
This must use two selects, the first retrieves the type field only.
|
protected void |
setAllChildClassIndicators(java.util.Vector allChildClassIndicators)
INTERNAL:
|
void |
setAlwaysUseOuterJoinForClassType(boolean choice)
PUBLIC:
Sets the inheritance policy to always use an outer join when querying across a relationship of class.
|
void |
setChildDescriptors(java.util.List<ClassDescriptor> childDescriptors)
INTERNAL:
|
void |
setClassExtractionMethodName(java.lang.String staticClassClassExtractionMethod)
ADVANCED:
A class extraction method can be registered with the descriptor to override the default inheritance mechanism.
|
void |
setClassExtractor(ClassExtractor classExtractor)
ADVANCED:
A class extractor can be registered with the descriptor to override the default inheritance mechanism.
|
void |
setClassExtractorName(java.lang.String classExtractorName)
ADVANCED:
Set the class extractor class name.
|
void |
setClassIndicatorAssociations(java.util.Vector classIndicatorAssociations)
INTERNAL:
Set the class indicator associations from reading the deployment XML.
|
void |
setClassIndicatorField(org.eclipse.persistence.internal.helper.DatabaseField classIndicatorField)
ADVANCED:
To set the class indicator field.
|
void |
setClassIndicatorFieldName(java.lang.String fieldName)
PUBLIC:
To set the class indicator field name.
|
void |
setClassIndicatorMapping(java.util.Map classIndicatorMapping)
PUBLIC:
Set the association of indicators and classes.
|
void |
setClassNameIndicatorMapping(java.util.Map classNameIndicatorMapping)
INTERNAL:
Set the class name indicator mapping, used by the MW.
|
void |
setDescribesNonPersistentSubclasses(boolean describesNonPersistentSubclasses)
ADVANCED:
Determines whether the descriptors using this inheritance policy
should be used as descriptors for subclasses of the classes they
describe if those subclasses do not have their own descriptor
e.g.
|
void |
setDescriptor(ClassDescriptor descriptor)
INTERNAL:
Set the descriptor.
|
void |
setJoinedStrategy()
INTERNAL:
Used to indicate a JOINED inheritance strategy.
|
void |
setOnlyInstancesExpression(Expression onlyInstancesExpression)
ADVANCED:
Sets the expression used to select instance of the class only.
|
void |
setParentClass(java.lang.Class parentClass)
PUBLIC:
Set the parent class.
|
void |
setParentClassName(java.lang.String parentClassName)
INTERNAL:
Set the parent class name, used by MW to avoid referencing the real class for
deployment XML generation.
|
void |
setParentDescriptor(ClassDescriptor parentDescriptor)
INTERNAL:
|
protected void |
setReadAllSubclassesView(org.eclipse.persistence.internal.helper.DatabaseTable readAllSubclassesView)
INTERNAL:
The view can be used to optimize/customize the query for all subclasses where they have multiple tables.
|
void |
setReadAllSubclassesViewName(java.lang.String readAllSubclassesViewName)
ADVANCED:
The view can be used to optimize/customize the query for all subclasses where they have multiple tables.
|
void |
setShouldOuterJoinSubclasses(boolean shouldOuterJoinSubclasses)
PUBLIC:
Set if an outer join should be used to read subclasses.
|
void |
setShouldReadSubclasses(boolean shouldReadSubclasses)
PUBLIC:
Set the descriptor to read instance of itself and its subclasses when queried.
|
void |
setShouldReadSubclasses(java.lang.Boolean shouldReadSubclasses)
INTERNAL:
Set the descriptor to read instance of itself and its subclasses when queried.
|
void |
setShouldUseClassNameAsIndicator(boolean shouldUseClassNameAsIndicator)
PUBLIC:
Set if the descriptor uses the classes fully qualified name as the indicator.
|
void |
setSingleTableStrategy()
INTERNAL:
Used to indicate a SINGLE_TABLE inheritance strategy.
|
void |
setUseDescriptorsToValidateInheritedObjects(boolean useDescriptorsToValidateInheritedObjects)
INTERNAL:
Sets if we should use the descriptor inheritance to determine
if an object can be returned from the identity map or not.
|
void |
setWithAllSubclassesExpression(Expression withAllSubclassesExpression)
ADVANCED:
Sets the expression to be used for querying for a class and all its subclasses.
|
boolean |
shouldAlwaysUseOuterJoin()
PUBLIC:
returns if the inheritance policy will always use an outerjoin when selecting class type
|
boolean |
shouldOuterJoinSubclasses()
PUBLIC:
Return if an outer join should be used to read subclasses.
|
boolean |
shouldReadSubclasses()
PUBLIC:
Return true if this descriptor should read instances of itself and subclasses on queries.
|
java.lang.Boolean |
shouldReadSubclassesValue()
INTERNAL:
Return true if this descriptor should read instances of itself and subclasses on queries.
|
boolean |
shouldUseClassNameAsIndicator()
PUBLIC:
Return true if the descriptor use the classes full name as the indicator.
|
java.lang.String |
toString()
INTERNAL:
|
protected void |
updateTables()
INTERNAL:
set the tables on the child descriptor
overridden in org.eclipse.persistence.internal.oxm.QNameInheritancePolicy
|
void |
useClassNameAsIndicator()
PUBLIC:
Set the descriptor to use the classes full name as the indicator.
|
protected java.lang.Class parentClass
protected java.lang.String parentClassName
protected ClassDescriptor parentDescriptor
protected java.util.List<ClassDescriptor> childDescriptors
protected org.eclipse.persistence.internal.helper.DatabaseField classIndicatorField
protected transient java.util.Map classIndicatorMapping
protected java.util.Map classNameIndicatorMapping
protected transient boolean shouldUseClassNameAsIndicator
protected transient java.lang.Boolean shouldReadSubclasses
protected org.eclipse.persistence.internal.helper.DatabaseTable readAllSubclassesView
protected transient java.util.List<java.lang.Object> allChildClassIndicators
protected transient Expression onlyInstancesExpression
protected transient Expression withAllSubclassesExpression
protected transient java.util.Vector allTables
protected transient java.util.List<org.eclipse.persistence.internal.helper.DatabaseTable> childrenTables
protected transient java.util.Map<org.eclipse.persistence.internal.helper.DatabaseTable,Expression> childrenTablesJoinExpressions
protected transient Expression childrenJoinExpression
protected java.lang.String classExtractorName
protected transient ClassExtractor classExtractor
protected ClassDescriptor descriptor
protected boolean shouldAlwaysUseOuterJoin
protected boolean useDescriptorsToValidateInheritedObjects
protected boolean shouldOuterJoinSubclasses
protected boolean isJoinedStrategy
protected ClassDescriptor rootParentDescriptor
protected boolean describesNonPersistentSubclasses
public InheritancePolicy()
public InheritancePolicy(ClassDescriptor descriptor)
public void addChildDescriptor(ClassDescriptor childDescriptor)
protected void addChildTableJoinExpression(org.eclipse.persistence.internal.helper.DatabaseTable table, Expression expression)
public void addChildTableJoinExpressionToAllParents(org.eclipse.persistence.internal.helper.DatabaseTable table, Expression expression)
public void addClassIndicator(java.lang.Class childClass, java.lang.Object typeValue)
public void addClassNameIndicator(java.lang.String childClassName, java.lang.Object typeValue)
addClassNameIndicator
in class CoreInheritancePolicy<org.eclipse.persistence.internal.sessions.AbstractRecord,org.eclipse.persistence.internal.sessions.AbstractSession,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField>
public void addClassIndicatorFieldToInsertRow(org.eclipse.persistence.internal.sessions.AbstractRecord databaseRow)
public void addClassIndicatorFieldToRow(org.eclipse.persistence.internal.sessions.AbstractRecord databaseRow)
addClassIndicatorFieldToRow
in class CoreInheritancePolicy<org.eclipse.persistence.internal.sessions.AbstractRecord,org.eclipse.persistence.internal.sessions.AbstractSession,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField>
protected void addClassIndicatorTypeToParent(java.lang.Object indicator)
protected void addFieldsToParent(java.util.Vector fields)
public org.eclipse.persistence.internal.expressions.SQLSelectStatement buildClassIndicatorSelectStatement(ObjectLevelReadQuery query)
public void appendWithAllSubclassesExpression(org.eclipse.persistence.internal.expressions.SQLSelectStatement selectStatement)
public org.eclipse.persistence.internal.expressions.SQLSelectStatement buildViewSelectStatement(ObjectLevelReadQuery query)
public java.lang.Class classFromRow(org.eclipse.persistence.internal.sessions.AbstractRecord rowFromDatabase, org.eclipse.persistence.internal.sessions.AbstractSession session) throws DescriptorException
classFromRow
in class CoreInheritancePolicy<org.eclipse.persistence.internal.sessions.AbstractRecord,org.eclipse.persistence.internal.sessions.AbstractSession,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField>
DescriptorException
public java.lang.Class classFromValue(java.lang.Object classFieldValue, org.eclipse.persistence.internal.sessions.AbstractSession session) throws DescriptorException
DescriptorException
public java.lang.Object clone()
clone
in class java.lang.Object
public void convertClassNamesToClasses(java.lang.ClassLoader classLoader)
protected java.lang.Class convertClassNameToClass(java.lang.String className, java.lang.ClassLoader classLoader)
public void dontReadSubclassesOnQueries()
public void dontUseClassNameAsIndicator()
protected java.util.List<java.lang.Object> getAllChildClassIndicators()
public java.util.List<ClassDescriptor> getAllChildDescriptors()
getAllChildDescriptors
in class CoreInheritancePolicy<org.eclipse.persistence.internal.sessions.AbstractRecord,org.eclipse.persistence.internal.sessions.AbstractSession,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField>
protected java.util.List<ClassDescriptor> getAllChildDescriptors(java.util.List<ClassDescriptor> allChildDescriptors)
public java.util.List<org.eclipse.persistence.internal.helper.DatabaseTable> getChildrenTables()
public java.util.Map<org.eclipse.persistence.internal.helper.DatabaseTable,Expression> getChildrenTablesJoinExpressions()
public Expression getChildrenJoinExpression()
public java.util.Vector getAllTables()
public java.util.List<ClassDescriptor> getChildDescriptors()
protected java.lang.reflect.Method getClassExtractionMethod()
public java.lang.String getClassExtractionMethodName()
public ClassExtractor getClassExtractor()
public void setClassExtractor(ClassExtractor classExtractor)
public void setClassExtractorName(java.lang.String classExtractorName)
setClassExtractorName
in class CoreInheritancePolicy<org.eclipse.persistence.internal.sessions.AbstractRecord,org.eclipse.persistence.internal.sessions.AbstractSession,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField>
setClassExtractor for more information on the ClassExtractor class.
public java.util.Vector getClassIndicatorAssociations()
public org.eclipse.persistence.internal.helper.DatabaseField getClassIndicatorField()
getClassIndicatorField
in class CoreInheritancePolicy<org.eclipse.persistence.internal.sessions.AbstractRecord,org.eclipse.persistence.internal.sessions.AbstractSession,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField>
public java.lang.String getClassIndicatorFieldName()
getClassIndicatorFieldName
in class CoreInheritancePolicy<org.eclipse.persistence.internal.sessions.AbstractRecord,org.eclipse.persistence.internal.sessions.AbstractSession,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField>
public java.util.Map getClassIndicatorMapping()
getClassIndicatorMapping
in class CoreInheritancePolicy<org.eclipse.persistence.internal.sessions.AbstractRecord,org.eclipse.persistence.internal.sessions.AbstractSession,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField>
public java.util.Map getClassNameIndicatorMapping()
getClassNameIndicatorMapping
in class CoreInheritancePolicy<org.eclipse.persistence.internal.sessions.AbstractRecord,org.eclipse.persistence.internal.sessions.AbstractSession,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField>
protected java.lang.Object getClassIndicatorValue()
protected java.lang.Object getClassIndicatorValue(java.lang.Class javaClass)
public ClassDescriptor getDescriptor()
getDescriptor
in class CoreInheritancePolicy<org.eclipse.persistence.internal.sessions.AbstractRecord,org.eclipse.persistence.internal.sessions.AbstractSession,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField>
public boolean getDescribesNonPersistentSubclasses()
public Expression getOnlyInstancesExpression()
public java.lang.Class getParentClass()
getParentClass
in class CoreInheritancePolicy<org.eclipse.persistence.internal.sessions.AbstractRecord,org.eclipse.persistence.internal.sessions.AbstractSession,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField>
public java.lang.String getParentClassName()
public ClassDescriptor getParentDescriptor()
getParentDescriptor
in class CoreInheritancePolicy<org.eclipse.persistence.internal.sessions.AbstractRecord,org.eclipse.persistence.internal.sessions.AbstractSession,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField>
public org.eclipse.persistence.internal.helper.DatabaseTable getReadAllSubclassesView()
public java.lang.String getReadAllSubclassesViewName()
public ClassDescriptor getRootParentDescriptor()
public ClassDescriptor getSubclassDescriptor(java.lang.Class theClass)
public ClassDescriptor getDescriptor(java.lang.Class theClass)
public boolean getUseDescriptorsToValidateInheritedObjects()
public Expression getWithAllSubclassesExpression()
public boolean hasChildren()
public boolean hasClassExtractor()
hasClassExtractor
in class CoreInheritancePolicy<org.eclipse.persistence.internal.sessions.AbstractRecord,org.eclipse.persistence.internal.sessions.AbstractSession,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField>
public boolean hasClassIndicator()
public boolean hasMultipleTableChild()
public boolean hasView()
public void initialize(org.eclipse.persistence.internal.sessions.AbstractSession session)
protected void initializeClassExtractor(org.eclipse.persistence.internal.sessions.AbstractSession session) throws DescriptorException
DescriptorException
protected void initializeOnlyInstancesExpression() throws DescriptorException
DescriptorException
protected void initializeOptimisticLocking()
protected void initializeCacheInvalidationPolicy()
protected void initializeWithAllSubclassesExpression() throws DescriptorException
DescriptorException
public boolean isChildDescriptor()
public boolean isJoinedStrategy()
public boolean isRootParentDescriptor()
isRootParentDescriptor
in class CoreInheritancePolicy<org.eclipse.persistence.internal.sessions.AbstractRecord,org.eclipse.persistence.internal.sessions.AbstractSession,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField>
public void postInitialize(org.eclipse.persistence.internal.sessions.AbstractSession session)
public void preInitialize(org.eclipse.persistence.internal.sessions.AbstractSession session) throws DescriptorException
DescriptorException
public void readSubclassesOnQueries()
public void remoteInitialization(DistributedSession session)
public boolean requiresMultipleTableSubclassRead()
protected java.util.Vector selectAllRowUsingCustomMultipleTableSubclassRead(ObjectLevelReadQuery query) throws DatabaseException
DatabaseException
- - an error has occurred on the database.protected java.util.Vector selectAllRowUsingDefaultMultipleTableSubclassRead(ObjectLevelReadQuery query) throws DatabaseException, QueryException
DatabaseException
- - an error has occurred on the database.QueryException
protected void removeChildren(ClassDescriptor descriptor, java.util.Set<java.lang.Class> classes, java.util.Set<java.lang.Class> subclasses)
public java.util.Vector selectAllRowUsingMultipleTableSubclassRead(ObjectLevelReadQuery query) throws DatabaseException
DatabaseException
- - an error has occurred on the database.protected org.eclipse.persistence.internal.sessions.AbstractRecord selectOneRowUsingCustomMultipleTableSubclassRead(ReadObjectQuery query) throws DatabaseException
DatabaseException
- - an error has occurred on the database.protected org.eclipse.persistence.internal.sessions.AbstractRecord selectOneRowUsingDefaultMultipleTableSubclassRead(ReadObjectQuery query) throws DatabaseException, QueryException
DatabaseException
QueryException
public org.eclipse.persistence.internal.sessions.AbstractRecord selectOneRowUsingMultipleTableSubclassRead(ReadObjectQuery query) throws DatabaseException, QueryException
DatabaseException
QueryException
protected void setAllChildClassIndicators(java.util.Vector allChildClassIndicators)
public void setChildDescriptors(java.util.List<ClassDescriptor> childDescriptors)
public void setClassExtractionMethodName(java.lang.String staticClassClassExtractionMethod)
public void setClassIndicatorAssociations(java.util.Vector classIndicatorAssociations)
public void setClassIndicatorField(org.eclipse.persistence.internal.helper.DatabaseField classIndicatorField)
setClassIndicatorField
in class CoreInheritancePolicy<org.eclipse.persistence.internal.sessions.AbstractRecord,org.eclipse.persistence.internal.sessions.AbstractSession,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField>
public void setClassIndicatorFieldName(java.lang.String fieldName)
public void setClassIndicatorMapping(java.util.Map classIndicatorMapping)
setClassIndicatorMapping
in class CoreInheritancePolicy<org.eclipse.persistence.internal.sessions.AbstractRecord,org.eclipse.persistence.internal.sessions.AbstractSession,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField>
public void setClassNameIndicatorMapping(java.util.Map classNameIndicatorMapping)
public void setDescriptor(ClassDescriptor descriptor)
setDescriptor
in class CoreInheritancePolicy<org.eclipse.persistence.internal.sessions.AbstractRecord,org.eclipse.persistence.internal.sessions.AbstractSession,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField>
public void setDescribesNonPersistentSubclasses(boolean describesNonPersistentSubclasses)
describesNonPersistentSubclasses
- public void setJoinedStrategy()
public void setOnlyInstancesExpression(Expression onlyInstancesExpression)
public void setParentClass(java.lang.Class parentClass)
public void setParentClassName(java.lang.String parentClassName)
setParentClassName
in class CoreInheritancePolicy<org.eclipse.persistence.internal.sessions.AbstractRecord,org.eclipse.persistence.internal.sessions.AbstractSession,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField>
public void setParentDescriptor(ClassDescriptor parentDescriptor)
protected void setReadAllSubclassesView(org.eclipse.persistence.internal.helper.DatabaseTable readAllSubclassesView)
public void setReadAllSubclassesViewName(java.lang.String readAllSubclassesViewName)
public void setShouldReadSubclasses(java.lang.Boolean shouldReadSubclasses)
setShouldReadSubclasses
in class CoreInheritancePolicy<org.eclipse.persistence.internal.sessions.AbstractRecord,org.eclipse.persistence.internal.sessions.AbstractSession,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField>
public void setShouldReadSubclasses(boolean shouldReadSubclasses)
public void setShouldUseClassNameAsIndicator(boolean shouldUseClassNameAsIndicator)
public void setAlwaysUseOuterJoinForClassType(boolean choice)
public void setSingleTableStrategy()
public void setUseDescriptorsToValidateInheritedObjects(boolean useDescriptorsToValidateInheritedObjects)
public void setWithAllSubclassesExpression(Expression withAllSubclassesExpression)
public boolean shouldReadSubclasses()
public java.lang.Boolean shouldReadSubclassesValue()
public boolean shouldAlwaysUseOuterJoin()
public boolean shouldOuterJoinSubclasses()
public void setShouldOuterJoinSubclasses(boolean shouldOuterJoinSubclasses)
public boolean shouldUseClassNameAsIndicator()
public java.lang.String toString()
toString
in class java.lang.Object
protected void updateTables()
public void useClassNameAsIndicator()