*/
@Override
protected void executeBatchQuery(DatabaseQuery query, CacheKey parentCacheKey, Map referenceObjectsByKey, AbstractSession session, AbstractRecord translationRow) {
// Execute query and index resulting objects by key.
List results;
ObjectBuilder builder = query.getDescriptor().getObjectBuilder();
if (this.mechanism == null) {
results = (List)session.executeQuery(query, translationRow);
for (Object eachReferenceObject : results) {
Object eachReferenceKey = extractKeyFromReferenceObject(eachReferenceObject, session);
referenceObjectsByKey.put(eachReferenceKey, builder.wrapObject(eachReferenceObject, session));
}
} else {
ComplexQueryResult complexResult = (ComplexQueryResult)session.executeQuery(query, translationRow);
results = (List)complexResult.getResult();
List<AbstractRecord> rows = (List)complexResult.getData();
int size = results.size();
for (int index = 0; index < size; index++) {
AbstractRecord row = rows.get(index);
Object key = this.mechanism.extractKeyFromTargetRow(row, session);
referenceObjectsByKey.put(key, builder.wrapObject(results.get(index), session));
}
}
}