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 likeSELECT 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 Summary
Constructors Constructor Description BulkFetchExistsHandler()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description 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.
-
-
-
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 interfaceBulkFetchHandler
- Parameters:
candidateCmd
- Metadata for the candidateparameters
- Parameters for the querymmd
- Metadata for the multi-valued fielddatastoreCompilation
- The datastore compilation of the querymapperOptions
- Any options for the query to SQL mapperquery
- The query- Returns:
- The bulk-fetch statement for retrieving this multi-valued field.
-
-