anchor.diff:  					var propertyName = propertyName == mapping.table ? mapping.property : propertyName;
   					// newTableName = structKeyExists( getDynamicMappings(), getterInstructions ) ? getDynamicMappings()[ getterInstructions ] : newTableName;
   					// MANY-TO-ONE
  -					if( structKeyExists( variables, mapping.table & "_ID" ) ){
  +					if( structKeyExists( variables, mapping.table & "_ID" ) || structKeyExists( variables, mapping.key ) ){
   						// Loading Many to One relationship for getterInstructions
  -						// writeLog('CALLING _getManyToOne() for #mapping.table# (#propertyName#) #returnType# (dynamically called via #arguments.missingMethodName# on #getTable()# for #getID()#)');
  -						variables[ propertyName ] = this[ propertyName ] = _getManyToOne( table = lcase( mapping.table ), property = propertyName, fkColumn = mapping.table & "_ID", returnType = returnType );
  -
  -					}else {
  +						// writeLog('CALLING _getManyToOne() for #mapping.table# (#propertyName#) #returnType# (dynamically called via #arguments.missingMethodName# on #this.getTable()# for #this.getID()# [ #mapping.table# : #mapping.property# : #mapping.key#])');
  +						variables[ propertyName ] = this[ propertyName ] = _getManyToOne( table = lcase( mapping.table ), property = propertyName, fkColumn = mapping.key != mapping.table ? mapping.key : mapping.table & "_ID", returnType = returnType );
  +						// writeLog('loaded child #variables[propertyName].getID()# from #mapping.table# into property #propertyName#');
  +
  +					}else{
   
   						// ONE-TO-MANY
   						// If the current entity didn't have a FK to the table, maybe we need to load a one-to-many.
  
positive.code: 						// current entity's ID value.
  
  						// newTableName = structKeyExists( getDynamicMappings(), newTableName ) ? getDynamicMappings()[ newTableName ] : newTableName;
  						// writeLog('CALLING _getOneToMany() for #newTableName# (#propertyName#) #returnType# (dynamically called via #arguments.missingMethodName# on #getTable()# for #getID()#)');
  						return _getOneToMany( table = lcase( mapping.table ), property = propertyName, returnType = returnType );
  
  					}
  					return variables[ propertyName ];
  				} catch ( any e ){
  					if( e.type != 'BMO' ){
  						// throw(e.detail);
  						writeDump(e);abort;
  					}
  				}
  			}else if( getterInstructions contains "By"){
  
negative.code: 									if( isArray( returnStruct[ arg ] ) ){
  										for( var i = 1; i LTE arrayLen( returnStruct[ arg ] ); i++ ){
  											if( isObject( returnStruct[ arg ][ i ] ) ){
  												// returnStruct['__level'] = nestLevel;
  												returnStruct[ arg ][ i ] = returnStruct[ arg ][ i ].toStruct( excludeKeys = excludeKeys, preserveCase = preserveCase, nestLevel = nestLevel+1 );
  											}
  										}
  									}else if( isObject( returnStruct[ arg ] ) ){
  										// returnStruct['__level'] = nestLevel;
  										returnStruct[ arg ] = returnStruct[ arg ].toStruct( excludeKeys = excludeKeys, preserveCase = preserveCase, nestLevel = nestLevel+1 );
  									}
  								}else{
  