Hum... The requirements indicates that CGLIB 2.0 should be used. But I doubt this would change anything. I'm not using Spring, but if this sort of problem is normal with Spring, the mailing list would already contain a solution.
Can anyone confirm that lazy loading works with Spring? If so, then maybe it is the Spring configuration that is problematic. Christian -----Original Message----- From: Tom Duffey [mailto:[EMAIL PROTECTED] Sent: Wednesday, 27 September 2006 10:44 To: [email protected] Subject: Re: lazy loading confusion On Sep 27, 2006, at 9:40 AM, Poitras Christian wrote: > Try to turn on enhancement (also add needed jar) for lazy loading and > see what happens. Same thing. I'm using CGLIB 2.1 which was the oldest version I could find on their site. Tom > -----Original Message----- > From: Tom Duffey [mailto:[EMAIL PROTECTED] > Sent: Wednesday, 27 September 2006 10:34 > To: [email protected] > Subject: Re: lazy loading confusion > > > On Sep 27, 2006, at 9:28 AM, Poitras Christian wrote: > >> 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. > > Did this. The getter is never called, only the setter. This > application is using Spring 1.x for some AOP logging, could it be > manipulating some bytecode somehow to make iBATIS think it needs to > load the data? > > Tom > >> >> 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.ProjectSqlMapD >> a >> o" >> >> /> >> <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 >> >> > >
