I don't know if I understand correctly. Do you WANT an object created when all of the columns are null? Or not?
Clinton On Fri, 14 Jan 2005 17:20:52 -0600, Kit Cragin <[EMAIL PROTECTED]> wrote: > I am trying to use a join to avoid an extra select when I retrieve an object > that has a property which is another object (not a primitive or native > type). > > The relevant fragments of my XML file are: > > <resultMap id="YMap" class="Y"> > <result property="ID" column="Y_ID"/> > <result property="Name" column="Y_Name"/> > <result property="Description" column="Y_Desc"/> > > </resultMap> > > <resultMap id="XMap" class="X"> > <result property="ID" column="X_ID"/> > <result property="Name" column="X_Name"/> > <result property="Description" column="X_Desc"/> > > <result property="MyY" resultMapping="MyStatements.YMap"/> > </resultMap> > > ... > > <select id="X.Get" resultMap="XMap"> > select * from X, Y where X.X_ID = #value# and X.Y_ID = Y.Y_ID > </select> > > This works fine as long as X.Y_ID is non null. However, the database schema > allows X.Y_ID to be null. From an application perspective, I'd like to > reconstitute an instance of class X where it's MyY property (of type Y) will > be null when X.Y_ID is null. > > So the above does not work. The only alternatives I can currently think of > are: > > 1) replace > <result property="MyY" resultMapping="MyStatements.YMap"/> > with > <result property="MyY" select="Get.Y"/> > and change X.Get to remove the join... > > but that means every X.Get will invoke a Y.Get and any X.GetAll (assuming I > create one) will invoke multiple Y.Get (N+1) selects problem. > > or 2) > > Use caching. This is fine and I intend to at some point, but would like to > get everything working first before going the caching route. > > Any ideas? > >