in grails-datastore-gorm-hibernate/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsDomainBinder.java [606:631]
protected Set<String> buildDiscriminatorSet(HibernatePersistentEntity domainClass) {
Set<String> theSet = new HashSet<>();
Mapping mapping = domainClass.getMapping().getMappedForm();
String discriminator = domainClass.getName();
if (mapping != null && mapping.getDiscriminator() != null) {
DiscriminatorConfig discriminatorConfig = mapping.getDiscriminator();
if(discriminatorConfig.getValue() != null) {
discriminator = discriminatorConfig.getValue();
}
}
Mapping rootMapping = getRootMapping(domainClass);
String quote = "'";
if (rootMapping != null && rootMapping.getDatasources() != null) {
DiscriminatorConfig discriminatorConfig = rootMapping.getDiscriminator();
if(discriminatorConfig != null && discriminatorConfig.getType() != null && !discriminatorConfig.getType().equals("string"))
quote = "";
}
theSet.add(quote + discriminator + quote);
final java.util.Collection<PersistentEntity> childEntities = domainClass.getMappingContext().getDirectChildEntities(domainClass);
for (PersistentEntity subClass : childEntities) {
theSet.addAll(buildDiscriminatorSet((HibernatePersistentEntity) subClass));
}
return theSet;
}