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.