I'm trying to map from a single statement that joins 4 tables into a
deep complex object layout. The result maps look like this:

<resultMap id="session-result" class="Session" groupBy="SessionID">
  <result property="SessionID" column="Session_SessionID"/>
  <!-- Rest omitted for brevity -->
</resultMap>

<resultMap id="class-result" class="TrainingEvent" groupBy="ClassID">
   <result property="ClassID" column="Class_ClassID"/>
   <result property="Sessions"
resultMapping="SessionSqlMap.session-result" />
   <!-- Rest omitted for brevity -->
</resultMap>

<resultMap id="course-result" class="TrainingActivity"
groupBy="CourseID">
   <result property="CourseID" column="Course_CourseID"/>
   <result property="TrainingEvents"
resultMapping="TrainingEventSqlMap.class-result"/>
   <!-- Rest omitted for brevity -->
</resultMap>

<resultMap id="company-result" class="Company" groupBy="CompanyID">
   <result property="CompanyID" column="Company_CompanyID"/>
   <result property="TrainingActivities"
resultMapping="CourseSqlMap.course-result"/>
   <!-- Rest omitted for brevity -->
</resultMap>

and the SQL is:

SELECT /* fields omitted for brevity */
FROM Company c INNER JOIN 
     Course cr ON c.CompanyID = cr.CompanyID LEFT JOIN
     Class cl ON cr.CourseID = cl.CourseID LEFT JOIN
     Session s ON cl.SessionID = cl.SessionID

iBatis has no problem mapping the Company, Course and Class fields into
the complex object structure, but it throws a NullReferenceException
when it tries to map the fields from the Session table - even when I use
the very simple abbreviated result maps above.

Any help identifying where I'm going wrong would be much appreciated.

Thanks.












Reply via email to