in grails-datastore-gorm-hibernate/src/main/groovy/org/grails/orm/hibernate/AbstractHibernateGormInstanceApi.groovy [299:338]
private void autoRetrieveAssociations(Datastore datastore, PersistentEntity entity, Object target) {
EntityReflector reflector = datastore.mappingContext.getEntityReflector(entity)
IHibernateTemplate t = this.hibernateTemplate
for (PersistentProperty prop in entity.associations) {
if(prop instanceof ToOne && !(prop instanceof Embedded)) {
ToOne toOne = (ToOne)prop
def propertyName = prop.name
def propValue = reflector.getProperty(target, propertyName)
if (propValue == null || t.contains(propValue)) {
continue
}
PersistentEntity otherSide = toOne.associatedEntity
if (otherSide == null) {
continue
}
def identity = otherSide.identity
if(identity == null) {
continue
}
def otherSideReflector = datastore.mappingContext.getEntityReflector(otherSide)
try {
def id = (Serializable)otherSideReflector.getProperty(propValue, identity.name);
if (id) {
final Object associatedInstance = t.get(prop.type, id)
if (associatedInstance) {
reflector.setProperty(target, propertyName, associatedInstance)
}
}
}
catch (InvalidPropertyException ipe) {
// property is not accessable
}
}
}
}