Interface DiscriminatorDefiner


  • public interface DiscriminatorDefiner
    A 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 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 context
        resultMapping - 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 built
        className - name of class being queried in JDO/SQL query
        dismd - defined JDO discriminator meta data
        discriminatorMapping - defined JDO discriminator mapping
        discrimSqlTbl - table to query
        clr - 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.