Module org.datanucleus.store.rdbms
Interface DiscriminatorDefiner
-
public interface DiscriminatorDefinerA way of defining a custom discriminator mechanism that goes beyond what can be defined using standard JDO mechanisms (which is discriminating one a single column).
-
-
Field Summary
Fields Modifier and Type Field Description static StringMETADATA_EXTENSION_DISCRIMINATOR_DEFINER
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description DiscriminatorClassNameResolvergetDiscriminatorClassNameResolver(org.datanucleus.ExecutionContext ec, StatementClassMapping resultMapping)Return a custom class-name-resolver for a discriminator.BooleanExpressiongetExpressionForDiscriminatorForClass(SQLStatement stmt, String className, org.datanucleus.metadata.DiscriminatorMetaData dismd, JavaTypeMapping discriminatorMapping, SQLTable discrimSqlTbl, org.datanucleus.ClassLoaderResolver clr)Return boolean expression for fetching object of the discriminator (class name) when using JDO/SQL queries.
-
-
-
Field Detail
-
METADATA_EXTENSION_DISCRIMINATOR_DEFINER
static final String METADATA_EXTENSION_DISCRIMINATOR_DEFINER
- See Also:
- Constant Field Values
-
-
Method Detail
-
getDiscriminatorClassNameResolver
DiscriminatorClassNameResolver getDiscriminatorClassNameResolver(org.datanucleus.ExecutionContext ec, StatementClassMapping resultMapping)
Return a custom class-name-resolver for a discriminator. Return null to leave class name resolving to normal JDO mechanisms.Current implementation only allows for discriminating on one string column.
The custom class-name-resolver enables to discriminate persistent objects from the selected ResultSet, e.g by using more column values to make a decision on which class should be instantiated from this DB row. This calculation can be of any complexity using the DB row from ResultSet.
- Parameters:
ec- Execution contextresultMapping- Mapping used for query, or null if fields of SQL table are used directly- Returns:
- null if no custom class name resolver is in use for supplied candidate class, otherwise return a custom class name resolver instance to use.
-
getExpressionForDiscriminatorForClass
BooleanExpression getExpressionForDiscriminatorForClass(SQLStatement stmt, String className, org.datanucleus.metadata.DiscriminatorMetaData dismd, JavaTypeMapping discriminatorMapping, SQLTable discrimSqlTbl, org.datanucleus.ClassLoaderResolver clr)
Return boolean expression for fetching object of the discriminator (class name) when using JDO/SQL queries. Return null to leave SQL generation to normal JDO mechanisms.This enables to generate SQL for fetching custom discriminated classes that might have been implemented in getDiscriminatorClassNameResolver method.
- Parameters:
stmt- SQL statement being builtclassName- name of class being queried in JDO/SQL querydismd- defined JDO discriminator meta datadiscriminatorMapping- defined JDO discriminator mappingdiscrimSqlTbl- table to queryclr- class loader resolver- Returns:
- null, to use standard JDO discriminator mechanisms, otherwise return full new boolean expression to be used for finding objects using custom discriminator for class of className.
-
-