referenceKey = getDirectMapUsableContainerPolicy().buildKey(databaseRow, (ObjectBuildingQuery)query, session);
} else {
referenceKey = getDirectMapUsableContainerPolicy().buildKey(databaseRow, null, session);
}
Object referenceValue = referenceRow.get(getDirectField());
CacheKey eachCacheKey = new CacheKey(extractKeyFromTargetRow(referenceRow, session));
Object container = referenceDataByKey.get(eachCacheKey);
if (container == null) {
container = mappingContainerPolicy.containerInstance();
referenceDataByKey.put(eachCacheKey, container);
}
// Allow for value conversion.
if (getValueConverter() != null) {
referenceValue = getValueConverter().convertDataValueToObjectValue(referenceValue, query.getSession());
}
mappingContainerPolicy.addInto(referenceKey, referenceValue, container, query.getSession());
}
query.setProperty("batched objects", referenceDataByKey);
query.setSession(null);
}
}
Object result = referenceDataByKey.get(new CacheKey(extractPrimaryKeyFromRow(databaseRow, session)));
// The source object might not have any target objects
if (result == null) {
return mappingContainerPolicy.containerInstance();
} else {