It works for me. Maybe your application is accessing the "members" property when the object is populating.
Try to turn on logging and see what happens. Add a log statement in your "members" property getter to be sure. Christian -----Original Message----- From: Tom Duffey [mailto:[EMAIL PROTECTED] Sent: Wednesday, 27 September 2006 09:25 To: [email protected] Subject: Re: lazy loading confusion On Sep 27, 2006, at 1:41 AM, Niels Beekman wrote: > Can we see your config? What all would you like to see? It's a large application and the example I posted is just a snippet. Here's more from my sql config and dao config: <sqlMapConfig> <properties resource="org/projectFoundry/config/jdbc.properties"/> <settings enhancementEnabled="true"/> <transactionManager type="JDBC"> <dataSource type="SIMPLE"> <property name="JDBC.Driver" value="${JDBC.Driver}"/> <property name="JDBC.ConnectionURL" value="$ {JDBC.ConnectionURL}"/> <property name="JDBC.Username" value="${JDBC.Username}"/> <property name="JDBC.Password" value="${JDBC.Password}"/> </dataSource> </transactionManager> <sqlMap resource="org/projectFoundry/persistence/project/ ProjectSqlMap.xml"/> <sqlMap resource="org/projectFoundry/persistence/user/ UserSqlMap.xml"/> etc. </sqlMapConfig> <daoConfig> <context> <transactionManager type="SQLMAP"> <property name="SqlMapConfigResource" value="org/ projectFoundry/config/sql-map.xml"/> </transactionManager> <dao interface="org.projectFoundry.persistence.project.ProjectDao" implementation="org.projectFoundry.persistence.project.ProjectSqlMapDao" /> <dao interface="org.projectFoundry.persistence.user.UserDao" implementation="org.projectFoundry.persistence.user.UserSqlMapDao"/> etc. </context> </daoConfig> Tom > > -----Original Message----- > From: Tom Duffey [mailto:[EMAIL PROTECTED] > Sent: woensdag 27 september 2006 7:34 > To: [email protected] > Subject: lazy loading confusion > > Hi All, > > I have a Project class with a list of Members. It is my understanding > that I can turn on lazy loading in my sql map config, define a Project > result map like: > > <resultMap id="result" class="foo.Project"> > <result property="projectId" column="id"/> > <result property="members" column="id" > select="Member.listByProject"/> > </resultMap> > > and then retrieve a project and the members will not be retrieved > unless I call getMembers() on the project instance. Is this how it's > supposed to work? What I'm finding is that the members list is > populated even if I do not call getMembers(). To back this idea I > renamed the property in the result map to "members2" and added a new > members2 attribute to the project class (To make sure I didn't miss > any calls to getMembers) and sure enough it is still populated when I > retrieve the project. > > What gives? I thought the point of lazy loading was to not load data > unless I ask for it. I'm using iBATIS 2.1.7 for Java. > > Best Regards, > > Tom Duffey
