Thank you for the quick response. This approach is exactly the direction I was heading after trying to use iBATIS' native functionality (in my case, using a static dictionary on the Stock class and a new constructor for the Position class which accepts a Stock as a parameter.)
Separately, Gilles Bayon suggested using the cacheModel, which seems very promising as well. I am going to attempt both solutions on Monday and will report back once I get things working. Thank you both for your help with this. > ---------- Forwarded message ---------- > From: "Nicholas L. Piasecki" <[EMAIL PROTECTED]> > To: <[email protected]> > Date: Sat, 10 Nov 2007 17:12:15 -0500 > Subject: RE: Question About Complex Types > As far as I know, there's no way to make iBATIS do this natively. You could > use your existing resultMaps and a QueryWithRowDelegate() and, in your row > delegate, add Stock objects to a Dictionary as you encounter them. Then, > manually assign the Stock object (pulling the object reference from your > Dictionary) and replace the duplicate one that iBATIS created. > > ...(snipped)...

