Class BulkFetchJoinHandler

  • All Implemented Interfaces:
    BulkFetchHandler

    public class BulkFetchJoinHandler
    extends Object
    implements BulkFetchHandler
    Helper class to generate the necessary statement for multi-valued field bulk-fetch, using JOIN semantics.

    In simple terms if we have a query with resultant SQL like

    SELECT COL1, COL2, COL3, ... FROM CANDIDATE_TBL T1 WHERE T1.COL2 = value
    then to retrieve a multi-valued collection field of the candidate class it generates an SQL like
    SELECT ELEM.COL1, ELEM.COL2, ... FROM CANDIDATE_TBL T1, ELEMENT_TBL ELEM WHERE ELEM.CAND_ID = T1.ID AND T1.COL2 = value
    Obviously there are differences when using a join-table, or when the elements are embedded into the join-table, but the basic idea is we generate an iterator statement for the elements (just like the backing store normally would) except instead of restricting the statement to just a particular owner, it adds a JOIN, restricting to the candidates implied by the query This is work-in-progress
    • Constructor Detail

      • BulkFetchJoinHandler

        public BulkFetchJoinHandler()
    • Method Detail

      • getStatementToBulkFetchField

        public IteratorStatement getStatementToBulkFetchField​(org.datanucleus.metadata.AbstractClassMetaData candidateCmd,
                                                              org.datanucleus.metadata.AbstractMemberMetaData mmd,
                                                              org.datanucleus.store.query.Query query,
                                                              Map parameters,
                                                              RDBMSQueryCompilation datastoreCompilation,
                                                              Set<String> mapperOptions)
        Convenience method to generate a bulk-fetch statement for the specified multi-valued field of the owning query.
        Specified by:
        getStatementToBulkFetchField in interface BulkFetchHandler
        Parameters:
        candidateCmd - Metadata for the candidate
        mmd - Metadata for the member we are bulk-fetching the value(s) for
        query - The query
        parameters - Parameters for the query
        datastoreCompilation - The datastore compilation of the query
        mapperOptions - Any mapper options for query generation
        Returns:
        The statement to use for bulk fetching, together with mappings for extracting the results of the elements