in grails-datastore-gorm-hibernate/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsDomainBinder.java [3091:3137]
protected String getColumnNameForPropertyAndPath(PersistentProperty grailsProp,
String path, ColumnConfig cc, String sessionFactoryBeanName) {
NamingStrategy namingStrategy = getNamingStrategy(sessionFactoryBeanName);
// First try the column config.
String columnName = null;
if (cc == null) {
// No column config given, so try to fetch it from the mapping
PersistentEntity domainClass = grailsProp.getOwner();
Mapping m = getMapping(domainClass);
if (m != null) {
PropertyConfig c = m.getPropertyConfig(grailsProp.getName());
if (supportsJoinColumnMapping(grailsProp) && hasJoinKeyMapping(c)) {
columnName = c.getJoinTable().getKey().getName();
}
else if (c != null && c.getColumn() != null) {
columnName = c.getColumn();
}
}
}
else {
if (supportsJoinColumnMapping(grailsProp)) {
PropertyConfig pc = getPropertyConfig(grailsProp);
if (hasJoinKeyMapping(pc)) {
columnName = pc.getJoinTable().getKey().getName();
}
else {
columnName = cc.getName();
}
}
else {
columnName = cc.getName();
}
}
if (columnName == null) {
if (isNotEmpty(path)) {
columnName = addUnderscore(namingStrategy.propertyToColumnName(path),
getDefaultColumnName(grailsProp, sessionFactoryBeanName));
} else {
columnName = getDefaultColumnName(grailsProp, sessionFactoryBeanName);
}
}
return columnName;
}