ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "David McReynolds" <david.mcreyno...@gmail.com>
Subject mapping multiple collections
Date Wed, 05 Nov 2008 16:02:42 GMT
I am working through a simple example where I have a table called "titles"
that contains attributes about books. A title will have 1..* authors and a
title will also have 1..* editors. Joining the titles and authors was simple
enough. However, when I pull in the editors (using a join table) I found
that I need to make adjustments. The "adjustment" I used was to make the
Editor class comparable, make the Title class contain Set<Editor> editors
and tell ibatis that the java type is "java.util.TreeSet".

I don't see any obvious waste of resources since the result set itself has
to return the different combinations of authors and editors (ie 2 authors
and 3 editors equals 6 rows in the result set) and a RowHandler would have
to deal with each row anyway. Am I missing something?

public class Title
    Set<Editor> editors;
 . . .

Using the TreeSet in the sql map prevents duplication.

  <resultMap groupBy="id" id="titleDetails"
extends="abatorgenerated_TitleResult" class="net.bookstore.persist.vo.Title"
>
    <result column="pub_id" property="publisher.id" jdbcType="CHAR" />
    <result column="pub_name" property="publisher.pubName" jdbcType="CHAR"
/>
    <result column="address" property="publisher.address" jdbcType="CHAR" />
    <result column="city" property="publisher.city" jdbcType="CHAR" />
    <result column="state" property="publisher.state" jdbcType="CHAR" />
    <result property="authors"
resultMap="authors.abatorgenerated_AuthorResult" column="au_id"
javaType="java.util.TreeSet"/>
    <result property="editors"
resultMap="editors.abatorgenerated_EditorResult" column="ed_id"
javaType="java.util.TreeSet"/>
 </resultMap>

--
dlm

Mime
View raw message