for (Enumeration rowsEnum = rows.elements(); rowsEnum.hasMoreElements();) {
AbstractRecord referenceRow = (AbstractRecord)rowsEnum.nextElement();
Object referenceKey = referenceRow.get(getDirectKeyField());
Object referenceValue = referenceRow.get(getDirectField());
CacheKey eachCacheKey = new CacheKey(extractKeyFromReferenceRow(referenceRow, session));
Object container = referenceDataByKey.get(eachCacheKey);
if (container == null) {
container = mappingContainerPolicy.containerInstance();
referenceDataByKey.put(eachCacheKey, container);
}
// Allow for key conversion.
if (getKeyConverter() != null) {
referenceKey = getKeyConverter().convertDataValueToObjectValue(referenceKey, query.getSession());
}
// 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);
}
}
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 {