| 
					
						 I am trying to eagerly load some collections using a left join fetch and my collections are not being populated.
 
 When I get to my view outside the session, hibernate throws the famous net.sf.hibernate.LazyInitializationException.
 
 I am using hibernate 2.1. My code is as follows:
 
 final StringBuffer query = new StringBuffer();		
 		query.append("select step from ApStepVO step ");
 		query.append("join step.technologies tech ");
 		query.append("left join fetch step.subSteps substeps ");
 		if(req.getAssociatedRequestListing().equals(Globals.YES)){
 			query.append("left join fetch step.clientAssistance ");
 		}
 		query.append("where tech.technologyName = :techName ");
 		query.append("and step.stepDetail <= :stepDetail ");
 		query.append("order by step.stepCategory");
 		
 		HibernateTemplate template = getHibernateTemplate();
 		
 		List steps = template.executeFind(
 			new HibernateCallback(){
 				public Object doInHibernate(Session session) throws HibernateException{
 				
 					Query q = session.createQuery(query.toString());
 					q.setParameter("techName", Globals.GENERAL_COMPUTER_CONTROLS);
 					q.setParameter("stepDetail", req.getDetail());
 					
 					return makeListUnique(q.list());
 				}
 			}		
 		);
 		return steps;
 
 The problem is that sub steps is not initialized and when I get to my view I get the exception.
 
 
 
 <?xml version="1.0"?>
 
 <!DOCTYPE hibernate-mapping PUBLIC
     "-//Hibernate/Hibernate Mapping DTD 2.0//EN" 
     "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
 
 <hibernate-mapping>
     <class
         name="com.securance.vo.ApStepVO"
         table="ap_step"
         proxy="com.securance.vo.ApStepVO"
         dynamic-update="false"
         dynamic-insert="false"
     >
 
         <id
             name="stepId"
             column="ap_step_id"
             type="int"
         >
             <generator class="native">
             </generator>
         </id>
 
         <property
             name="step"
             type="java.lang.String"
             update="true"
             insert="true"
             column="ap_step"
         />
 
         <many-to-one
             name="stepCategory"
             class="com.securance.vo.ApStepCategoryVO"
             cascade="none"
             outer-join="false"
             update="true"
             insert="true"
             column="ap_step_category_id"
         />
 
         <set
             name="clientAssistance"
             table="ap_step_client_assistance"
             lazy="true"
             inverse="false"
             cascade="all"
             sort="unsorted"
         >
 
               <key
                   column="ap_step_id"
               />
 
               <many-to-many
                   class="com.securance.vo.ClientRequestAssistanceVO"
                   column="client_assist_id"
                   outer-join="true"
               />
 
         </set>
 
         <set
             name="technologies"
             table="ap_step_technology"
             lazy="true"
             inverse="false"
             cascade="none"
             sort="unsorted"
         >
 
               <key
                   column="ap_step_id"
               />
 
               <many-to-many
                   class="com.securance.vo.TechnologyVO"
                   column="tech_id"
                   outer-join="auto"
               />
 
         </set>
 
         <property
             name="stepDetail"
             type="java.lang.Integer"
             update="true"
             insert="true"
             column="ap_detail_level_id"
         />
 
         <set
             name="subSteps"
             table="ap_sub_step"
             lazy="true"
             inverse="false"
             cascade="none"
             sort="unsorted"
         >
 
               <key
                   column="ap_step_id"
               />
 
               <one-to-many
                   class="com.securance.vo.ApSubStepVO"
               />
         </set>
 
         <!--
             To add non XDoclet property mappings, create a file named
                 hibernate-properties-ApStepVO.xml
             containing the additional properties and place it in your merge dir.
         -->
 
     </class>
 
         <query name="findStepsByTechnologyId"><![CDATA[
             select step from ApStepVO step join step.technologies techs where techs.technologyId = :techId
         ]]></query>
 
 </hibernate-mapping>
 
 
 
 
 
 MySQL 4.1 
					
  
						
					 |