You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-java@ibatis.apache.org by Craig Swift <Cr...@Sun.COM> on 2007/03/08 23:12:21 UTC
Potential Bug - Recursive Queries?
Hello,
I wanted to report a potential bug in the latest release of IBATIS. This
issue only appeared after performing a recent upgrade to the latest jar,
i.e. everything used to work. :) I'll do my best to try and explain it
over email - although it's a little confusing.
I have the two following tables (simplified):
RC_AWARD:
ID NUMBER(10)
NAME VARCHAR2(50)
Primary Key: ID
RC_AWARD_DEPENDENCIES:
DEPENDENT_AWARD_ID NUMBER(10)
DEPENDENCY_AWARD_ID NUMBER(10)
Primary Key: DEPENDENT_AWARD_ID, DEPENDENCY_AWARD_ID
There are six rows in the RC_AWARD table, and five rows in the
RC_AWARD_DEPENDENCIES table, with basically one award be dependent on
the other 5.
------------------------------------
My SQL Map looks like the following:
<sqlMap namespace="Award">
<resultMap id="awardResultMap" class="Award">
<result property="id" column="id" />
<result property="name" column="name" />
<result property="dependencies" column="id"
select="Award.getDependentAwards" />
</resultMap>
<select id="getAward" parameterClass="string"
resultMap="awardResultMap">
select * from RC_AWARD where ID = #value#
</select>
<select id="getDependentAwards" parameterClass="string"
resultMap="awardResultMap">
select
a.*
from
RC_AWARD a, RC_AWARD_DEPENDENCIES b
where
a.ID = b.DEPENDENCY_AWARD and
b.DEPENDENT_AWARD = #value#
order by a.NAME
</select>
</sqlMap>
------------------------------------
Finally the Award class is a simple bean where id and name are strings
and dependencies is a List<Award>.
------------------------------------
Ok, so there's the setup. ;) What used to happen is when I would call
"getAward" I'd get a single award object with my five award dependencies
populated in the object.
public Award getAward(String id) {
return awardDao.getAward(id);;
}
Now for what ever reason I only get the first dependency and not the
other four. If I run the queries seperately, something similar to this:
public Award getAward(String id) {
Award award = awardDao.getAward(id);
award.setDependencies(awardDao.getDependentAwards(id));
return award;
}
Everything is fine again. If it helps we went from version 2 (I think,
about 1 & 1/2 years old) to 2.3. This small tool is supposed to be our
"test" project before we upgrade one of our larger projects, so I'd
really like to figure out if it's an IBATIS issue or not. The larger
project has tons of these recursive type calls. Thanks in advance for
the help.
--
* Craig J. Swift
Sun Microsystems Inc.
Software Program Manager
*
Phone: 303-272-9944
Internal Ext: 79944
Email: Craig.Swift@Sun.COM
***Sun Confidential**:* This message including any attachments is
confidential information of Sun Microsystems Inc. Disclosure, copying,
or distribution is prohibited without permission of Sun. If you are not
the intended recipient, please reply to the sender and then delete this
message.
Re: Potential Bug - Recursive Queries?
Posted by Nathan Maves <na...@gmail.com>.
Craig actually works with me and I have seen this issue first hand. Any one
else tried to do this?
On 3/8/07, Craig Swift <Cr...@sun.com> wrote:
>
> Hello,
>
> I wanted to report a potential bug in the latest release of IBATIS. This
> issue only appeared after performing a recent upgrade to the latest jar,
> i.e. everything used to work. :) I'll do my best to try and explain it
> over email - although it's a little confusing.
>
> I have the two following tables (simplified):
>
> RC_AWARD:
> ID NUMBER(10)
> NAME VARCHAR2(50)
>
> Primary Key: ID
>
> RC_AWARD_DEPENDENCIES:
> DEPENDENT_AWARD_ID NUMBER(10)
> DEPENDENCY_AWARD_ID NUMBER(10)
>
> Primary Key: DEPENDENT_AWARD_ID, DEPENDENCY_AWARD_ID
>
> There are six rows in the RC_AWARD table, and five rows in the RC_AWARD_DEPENDENCIES
> table, with basically one award be dependent on the other 5.
>
> ------------------------------------
>
> My SQL Map looks like the following:
>
> <sqlMap namespace="Award">
> <resultMap id="awardResultMap" class="Award">
> <result property="id" column="id" />
> <result property="name" column="name" />
> <result property="dependencies" column="id" select="
> Award.getDependentAwards" />
> </resultMap>
>
> <select id="getAward" parameterClass="string"
> resultMap="awardResultMap">
> select * from RC_AWARD where ID = #value#
> </select>
>
> <select id="getDependentAwards" parameterClass="string"
> resultMap="awardResultMap">
> select
> a.*
> from
> RC_AWARD a, RC_AWARD_DEPENDENCIES b
> where
> a.ID = b.DEPENDENCY_AWARD and
> b.DEPENDENT_AWARD = #value#
> order by a.NAME
> </select>
> </sqlMap>
>
> ------------------------------------
>
> Finally the Award class is a simple bean where id and name are strings and
> dependencies is a List<Award>.
>
> ------------------------------------
>
> Ok, so there's the setup. ;) What used to happen is when I would call
> "getAward" I'd get a single award object with my five award dependencies
> populated in the object.
>
> public Award getAward(String id) {
> return awardDao.getAward(id);;
> }
>
> Now for what ever reason I only get the first dependency and not the other
> four. If I run the queries seperately, something similar to this:
>
> public Award getAward(String id) {
> Award award = awardDao.getAward(id);
> award.setDependencies(awardDao.getDependentAwards(id));
> return award;
> }
>
> Everything is fine again. If it helps we went from version 2 (I think,
> about 1 & 1/2 years old) to 2.3. This small tool is supposed to be our
> "test" project before we upgrade one of our larger projects, so I'd really
> like to figure out if it's an IBATIS issue or not. The larger project has
> tons of these recursive type calls. Thanks in advance for the help.
>
> --
> * Craig J. Swift
> Sun Microsystems Inc.
> Software Program Manager
> * Phone: 303-272-9944
> Internal Ext: 79944
> Email: Craig.Swift@Sun.COM
> ***Sun Confidential**:* This message including any attachments is
> confidential information of Sun Microsystems Inc. Disclosure, copying, or
> distribution is prohibited without permission of Sun. If you are not the
> intended recipient, please reply to the sender and then delete this message.
>
>