Class BulkFetchExistsHandler

java.lang.Object
org.datanucleus.store.rdbms.query.BulkFetchExistsHandler
All Implemented Interfaces:
BulkFetchHandler

public class BulkFetchExistsHandler extends Object implements BulkFetchHandler
Bulk-Fetch handler to generate the necessary statement for multi-valued field bulk-fetch using EXISTS subquery 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 ELEMENT_TBL ELEM WHERE EXISTS (
 SELECT T1.ID FROM CANDIDATE_TBL T1 WHERE T1.COL2 = value AND ELEM.OWNER_ID = T1.ID)
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 an EXISTS clause with the query as the exists subquery.
  • Constructor Details

    • BulkFetchExistsHandler

      public BulkFetchExistsHandler()
  • Method Details

    • 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 multi-valued field
      query - The query
      parameters - Parameters for the query
      datastoreCompilation - The datastore compilation of the query
      mapperOptions - Any options for the query to SQL mapper
      Returns:
      The bulk-fetch statement for retrieving this multi-valued field.