iBatis came back with an error message indicating too many objects were
being returned for executeQueryForObject.
Brad
On 2/20/07, Brad Handy <[EMAIL PROTECTED]> wrote:
Wouldn't I have to give unique column names for those identifying the
child data?
For example
table parentChild
some_foreign_key int
id int
description varchar(64)
parent_id int
rows
id description parent_id
0 grandparent null
1 parent 1 0
2 child 1 1
3 child 2 1
4 parent 2 0
5 child 3 4
6 parent 3 0
7 child 4 6
8 child 5 6
select
p.id as parentId
, p.description as parentDesc
, p.parent_id as parentAncestorId
, c.id as childId
, c.description as childDesc
, c.parent_id as childAncestorId
from
parentChild p
, parentChild c
where
p.some_foreign_key = c.some_foreign_key
and p.id = c.parent_id
and p.id <> c.id
order by
p.id
, c.id
should return
parentId parentDesc parentAncestorId childId
childDesc childAncestorId
0 grandparent null 1
parent 1 0
0 grandparent null 4
parent 2 0
0 grandparent null 6
parent 3 0
1 parent 1 0 2
child 1 1
1 parent 1 0 3
child 2 1
4 parent 2 0 5
child 3 4
6 parent 3 0 7
child 4 6
6 parent 3 0 8
child 5 6
On 2/20/07, Clinton Begin <[EMAIL PROTECTED] > wrote:
>
>
> i.e. is it a join with a bridge table or not (1:M or M:N)?
>
> Regardless, I wonder if a recursive result map would work....It might.
>
> <resultMap id="Node" ... >
> <result name="children" ... resultMap="Node"/>
> ...
>
> I don't see any reason why that would cause any problems...perhaps try
> it and let us know.
>
> Cheers,
> Clinton
>
> On 2/19/07, Clinton Begin <[EMAIL PROTECTED]> wrote:
> >
> >
> > Oh...is it a self join?
> >
> > Clinton
> >
> > On 2/19/07, Brad Handy < [EMAIL PROTECTED]> wrote:
> > >
> > > I guess I'll have to take a different approach. The depth isn't set
> > > to be a defined level; so if I go more than two levels below the
> > > grandparent, it won't work.
> > >
> > > On 2/19/07, Clinton Begin <[EMAIL PROTECTED]> wrote:
> > > >
> > > > You'll need one query with 3 result maps. The result maps will be
> > > > chained together with collection properties using the resultMap
attribute.
> > > >
> > > >
> > > > <resultMap id="Child">
> > > > ...
> > > > <resultMap id="Parent">
> > > > <result ... resultMap="Child"/>
> > > > ...
> > > > <resultMap id="GrandParent">
> > > > <result ... resultMap="Parent"/>
> > > > ...
> > > > <select ... resultMap="GrandParent">
> > > > ...
> > > >
> > > > The select statement should join the tables together and you may
> > > > need to be very explicit with the column names.
> > > >
> > > > Clinton
> > > >
> > > > On 2/19/07, Brad Handy <[EMAIL PROTECTED]> wrote:
> > > > >
> > > > > I have a table which has all of the parent/child relationships
> > > > > in the same table. I would like to avoid the N+1 selects with this
> > > > > construct, but it's unclear from the documentation if this can be
done.
> > > > >
> > > > > Let's say I have the following relationships defined in the
> > > > > table:
> > > > >
> > > > > Grand Parent
> > > > > Parent 1
> > > > > Child 1
> > > > > Child 2
> > > > > Parent 2
> > > > > Parent 3
> > > > > Child 3
> > > > > Child 4
> > > > >
> > > > >
> > > > > When creating the child objects for "Grand Parent", will the
> > > > > same "Parent*" objects be used to add the children "Child*" objects
to the
> > > > > appropriate parents?
> > > > >
> > > > >
> > > > >
> > > > > Brad
> > > > >
> > > >
> > > >
> > >
> >
>