void convert(List<DataRow> mainRows) {
int rowsLen = mainRows.size();
List<Object[]> objects = new ArrayList<Object[]>(rowsLen);
SQLResultSetMapping rsMapping = metadata.getResultSetMapping();
// pass 1 - init Object[]'s and resolve scalars for each row
int resultWidth = rsMapping.getResultDescriptors().size();
int[] entityPositions = rsMapping.getEntityResultPositions();
int[] columnPositions = rsMapping.getColumnResultPositions();
for (DataRow row : mainRows) {
Object[] resultRow = new Object[resultWidth];
for (int i = 0; i < columnPositions.length; i++) {
int pos = columnPositions[i];
resultRow[pos] = row.get(rsMapping.getColumnResult(pos));
}
objects.add(resultRow);
}
// pass 2 - resolve individual object columns, and then update the rows...
List[] resultLists = new List[entityPositions.length];
for (int i = 0; i < entityPositions.length; i++) {
int pos = entityPositions[i];
EntityResult entityMapping = rsMapping.getEntityResult(pos);
List<DataRow> normalized = toNormalizedDataRows(entityMapping, mainRows);
List<Persistent> nextResult = toObjects(entityMapping
.getClassDescriptor(domain.getEntityResolver()), null, normalized);