You know something... I've been reviewing the code off an on for the last couple of days to see if there is something that may have caused this... and you know what, you may not be crazy.
Looking at some of the gen'd code, I see the following:
<cffunction name="setCMemento" access="public" returntype="void" default="void" hint="set the state of composition manytoone 'C'" output="false">
<cfargument name="memento" type="struct" required="true" hint="the memento to set the state with">
<cfscript>
var composite = 0;
setCisLoaded(true);
if(StructIsEmpty(arguments.memento))
{
removeC();
}
else
{
composite = getComposite("abcmanytoone.C", arguments.memento, "id");
setC(composite);
}
</cfscript>
</cffunction>
Where I set the isLoaded value before I actually set the value of the object.
If you look at the getC() method:
<cffunction name="getC" access="public" returntype="transfer.com.TransferObject" default="transfer.com.TransferObject" hint="Accessor for C, abcmanytoone.C" output="false">
<cfscript>
if(NOT getCisLoaded()){
loadC();}if(NOT structKeyExists(instance, "C"))
{
throw("ManyToOneNotSetException","A ManyToOne TransferObject has not been initialised.","In TransferObject 'abcmanytoone.A' manytoone 'abcmanytoone.C' does not exist.");
}
return instance.C;
</cfscript>
</cffunction>
If there was a concurrent method call that happened at the same time that the highlighted part was working.. you would get the error you saw....
I'll change the order on this, and do some testing, and upload a change to SVN later today, and you can give it a test run.
I was sure this was something in your application, but you know what, I've been wrong before, and I'll probably be wrong again ;o) Thanks for being persistent.
Mark