Nested groupBy
--------------

                 Key: IBATIS-442
                 URL: https://issues.apache.org/jira/browse/IBATIS-442
             Project: iBatis for Java
          Issue Type: Bug
          Components: SQL Maps
    Affects Versions: 2.1.6
         Environment: Win XP, JBoss 4
            Reporter: raja chawat


How do we add per-resultMap uniqueKeys? I don't see any example.
Please help.

My resultset is like:
I have a list of instructors in a group, and every instructor can teach a list 
of courses. My problem is an instructor can belong to multiple groups.
I see instructor only in 1 group. And I see list of components repeated for 
that instructor for every group that he/she belongs to.

And if I remove the 2nd groupBy, I see instructor in multiple groups. But in 
each group, it is listed n number of times, where n is the number of courses 
he/she can teach.

Am I doing something wrong here, please comment. How do I resolve this issue?

Also, the regionID can be same as groupByID, since I am grouping dynamically. I 
have "select region_id as group_by_id".

    <resultMap id="GroupVOXResultMap" class="GroupVOX" groupBy="groupByID">
        <result property="groupByID" column="group_by_id"/>
        <result property="groupByDesc" column="group_by_desc"/>
        <result property="instructorVOXList" 
resultMap="Scheduler.InstructorVOXResultMap"/>
    </resultMap>
    <resultMap id="InstructorVOXResultMap" class="InstructorVOX" 
groupBy="instructorID">
        <result property="instructorID" column="inst_id"/>
        <result property="firstName" column="fname"/>
        <result property="middleInitial" column="mi"/>
        <result property="lastName" column="lname"/>
        <result property="regionID" column="region_id"/>
        <result property="regionDesc" column="region_desc"/>
        <result property="cpntPKs" resultMap="Scheduler.ComponentPKResultMap"/>
    </resultMap>
    <resultMap id="ComponentPKResultMap" class="ComponentPK">
        <result property="componentTypeID" column="cpnt_typ_id"/>
        <result property="componentID" column="cpnt_id"/>
        <result property="revisionDate" column="rev_dte"/>
    </resultMap>



I found a workaround for this problem. If you add regionID to the groupBy in 
the innerMap, it works. Only thing is both regionID and groupID are same 
columns referenced by different names. It will fail, if you use "groupID" in 
the inner resultmap.

Is this a bug? Do the keys in the groupBy have to be unique?

<resultMap id="GroupVOXResultMap" class="GroupVOX" groupBy="groupByID">
        <result property="groupByID" column="group_by_id"/>
        <result property="groupByDesc" column="group_by_desc"/>
        <result property="instructorVOXList" 
resultMap="Scheduler.InstructorVOXResultMap"/>
    </resultMap>
    <resultMap id="InstructorVOXResultMap" class="InstructorVOX" 
groupBy="regionID, instructorID">
        <result property="instructorID" column="inst_id"/>
        <result property="firstName" column="fname"/>
        <result property="middleInitial" column="mi"/>
        <result property="lastName" column="lname"/>
        <result property="regionID" column="region_id"/>
        <result property="regionDesc" column="region_desc"/>
        <result property="cpntPKs" resultMap="Scheduler.ComponentPKResultMap"/>
    </resultMap>
    <resultMap id="ComponentPKResultMap" class="ComponentPK">
        <result property="componentTypeID" column="cpnt_typ_id"/>
        <result property="componentID" column="cpnt_id"/>
        <result property="revisionDate" column="rev_dte"/>
    </resultMap>


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to