Hi,
I am trying to populate a complex object and get the final result with
multiple complex objects into a single xml document directly using iBatis:
class Parent {
private String parentA;
private String parentB;
private List children;
public ....getters and setters
}
class Child{
private String childA;
private String childB;
public ....getters and setters
}
<resultMap id="parentResultMap" class="com.blah.Parent">
<result column="parent_a" property="parentA" />
<result column="parent_b" property="parentB" />
<!-- customizations -->
<result column="parent_a" property="children"
select="loadChildren"/>
</resultMap>
<select id="loadParentObject" resultMap="parentResultMap">
select * from parent
</select>
<resultMap id="childResultMap" class="com.blah.Child">
<result column="child_a" property="childA" />
<result column="child_b" property="childB" />
</resultMap>
<select id="loadChildren" resultMap="childResultMap">
select * from children
where parent_a = #parentA:VARCHAR#
</select>
I can get this to load the java objects however I would like to get it in
xml such as
<?xml version="1.0" encoding="UTF-8" ?>
<parent>
<parenta>1</parenta>
<parentb>tom</parentb>
<children>
<child>
<childa>1</childa>
<childb>william</childb>
</child>
<child>
<childa>2</childa>
<childb>jack</childb>
</child>
<child>
<childa>3</childa>
<childb>john</childb>
</child>
</children>
<parent>
<parent>
<parenta>1</parenta>
<parentb>tom</parentb>
<children>
<child>
<childa>1</childa>
<childb>william</childb>
</child>
</children>
<parent>
.......
I tried to change the result map to
<resultMap id="parentResultMap" class="xml" xmlName="report">
<result column="parent_a" property="parentA" />
<result column="parent_b" property="parentB" />
<!-- customizations -->
<result column="parent_a" property="children"
select="loadChildren"/>
</resultMap>
But I get the result something like
<?xml version="1.0" encoding="UTF-8" ?><parent> .......</parent> only.
I get the results back from one level only. It concatenated
<?xml version="1.0" encoding="UTF-8" ?> to every row of result returned and
does not put the child elements to reflect the relationship in the final xml
generated.
Hence each row ends up becoming a separate xml document rather than the
enitire resultSet as one XML document.
Any pointers or suggestions would really help.
Thanks
Ahuja