Discriminator and subMap are used for inheritance. I don't think they help you with this situation. However, you could use the N+1 selects solution. Check out the FAQ on that subject "How do I avoid the N Plus One selects problem...?"
Clinton
On 5/18/05, Gregg D Bolinger <[EMAIL PROTECTED]> wrote:
Do these new features in the new 2.1 release help improve my mapping file as shown below? If so, can someone tell me how? where I have specified the select=".." in the resultMap "issue-result", I am using the namespace and a select id to query for that object. I am looking for a quicker/better/more concise way of handling this.
Thanks.
<sqlMap namespace="issue">
<resultMap id="issue-result" class="com.intrust.anykey.model.Issue">
<result property="issueId" column="issue_id"/>
<result property="issueNumber" column="issue_number"/>
<result property="dateRaised" column="date_raised"/>
<result property="dateAccepted" column="date_accepted"/>
<result property="dateResolved" column="date_resolved"/>
<result property="dateModified" column="date_modified"/>
<result property="dateExpResolve" column="date_exp_resolve"/>
<result property="inputBy" column="input_by" select="user.getUserById"/>
<result property="lastUpdatedBy" column="last_updated_by" select="user.getUserById"/>
<result property="employee" column="employee_id" select="employee.getEmployeeById"/>
<result property="workstationName" column="workstation_name"/>
<result property="summary" column="summary"/>
<result property="additionalInformation" column="additional_info"/>
</resultMap>
<insert id="insertIssue" parameterClass="com.intrust.anykey.model.Issue">
insert into t_issue
(issue_number, date_raised, date_modified, date_accepted, date_exp_resolve, date_resolved, input_by,
last_updated_by, employee_id, workstation_name, workstation_id, hardware_id, monitor_id, printer_id, problem_id,
system_id, type_id, action_id, level_id, status_id, summary, additional_info, accepted_by_user_id, reopened_by_user_id,
resolved_by_user_id)
VALUES
(#issueNumber#, #dateRaised#, #dateModified#, #dateAccepted#, #dateExpResolve#, #dateResolved#,
#inputBy.userId#, #lastUpdatedBy.userId#, #employee.employeeId#, #workstationName#, #workstation.id#, #hardware.id#,
#monitor.id#, #printer.id#, #problem.id#, #system.id#, #issueType.id#, #issueAction.id#, #issueLevel.id#, #issueStatus.id#,
#summary#, #additionalInformation#, #acceptedByUserId.userId#, #reopenedByUserId.userId#, #resolvedByUserId.userId#)
</insert>
<select id="getAllIssuesByEmployeeId" resultMap="issue-result" parameterClass="int" >
select * from t_issue where employee_id = #value#
</select>
<select id="getAllIssues" resultMap="issue-result">
select * from t_issue
</select>
<select id="findByIssueNumber" resultMap="issue-result" parameterClass="string">
select * from t_issue where issue_number = #value#
</select>
<select id="getIssueByUserId" resultMap="issue-result" parameterClass="int">
select * from t_issue, t_user where creating_user_id = #value#;
</select>
</sqlMap>