// Initialize a new SqlResultSetMapping (with the metadata name)
SQLResultSetMapping mapping = new SQLResultSetMapping(getName());
// Process the entity results.
for (EntityResultMetadata eResult : m_entityResults) {
EntityResult entityResult = new EntityResult(MetadataHelper.getClassForName(eResult.getEntityClass().getName(), loader));
// Process the field results.
if (eResult.hasFieldResults()) {
for (FieldResultMetadata fResult : eResult.getFieldResults()) {
FieldResult fieldResult = new FieldResult(fResult.getName(), fResult.getColumn());
if (project.useDelimitedIdentifier()) {
fieldResult.getColumn().setUseDelimiters(true);
} else if (project.getShouldForceFieldNamesToUpperCase() && !fieldResult.getColumn().shouldUseDelimiters()) {
fieldResult.getColumn().useUpperCaseForComparisons(true);
}
entityResult.addFieldResult(fieldResult);
}
}
// Process the discriminator value;
if (eResult.getDiscriminatorColumn() !=null){
DatabaseField descriminatorField = new DatabaseField(eResult.getDiscriminatorColumn());
if (project.useDelimitedIdentifier()) {
descriminatorField.setUseDelimiters(true);
} else if (project.getShouldForceFieldNamesToUpperCase() && !descriminatorField.shouldUseDelimiters()){
descriminatorField.useUpperCaseForComparisons(true);
}
entityResult.setDiscriminatorColumn(descriminatorField);
}
// Add the result to the SqlResultSetMapping.
mapping.addResult(entityResult);
}