anchor.diff:  		this[ "set" & table ] = variables[ "set" & table ] = _setter;
   		this[ "get" & table ] = variables[ "get" & table ] = _getter;
   		// Update Cache
  -		cachePut( '#getTable()#-#getID()#', this, getcachedWithin() );
  +		lock type="exclusive" name="#getTable()#-#getID()#" timeout="1"{
  +			cachePut( '#getTable()#-#getID()#', this, getcachedWithin() );
  +		}
   		//writeLog('Loading dynamic one-to-many relationship entity #table# with #fkcolumn# of #pkValue# - parent #getTable()# [#newObj.getParentTable()#]');
   		if( table == getTable() || returnType == "array" || returnType == "struct" || returnType == "json" ){
   			return evaluate("newObj.lazyLoadAllBy#fkColumn#As#returnType#(#pkValue#)");
  
positive.code: 
  		if( isSimpleValue( ID ) && !this.isNew() ){
  			// Now cache this thing.  The next time we need to call it (within the cachedwithin timespan) we can just pull it from memory.
  			cachePut( '#getTable()#-#ID#', this, getcachedWithin() );
  		}
  		return this;
  
  
negative.code: 		// are added via hasMany or belongsTo, or the entity is persisted to the database (.save() is called )
  		if( isSimpleValue( ID ) && len( trim( ID ) ) ){
  			// Load from cache if we've got it
  			// cacheremove( '#getTable()#-#ID#' );
  			lock type="readonly" name="#getTable()#-#ID#" timeout="1"{
  				var cachedObject = cacheGet( '#getTable()#-#ID#' );
  			}
  			// writeLog('Loaded #getTable()#-#ID# from cache');
  			// if cachedObject is null that means the object didn't exist in cache, so we'll just move on with loading
  			if( !isNull( cachedObject ) && len( trim( cachedObject.getID() ) ) ){
  				// If we made it this far, the object was found in cache.  Now, to "laod" the cache object's data into the
  				// current object is going to take some trickery.
  				// First, we'll set the "fromCache" flag so that later we can see this was loaded from cache.
  