ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Kris Rasmussen <kristapes...@yahoo.com>
Subject n+1 is triggering multiple queries, why???
Date Tue, 12 Jul 2005 06:49:55 GMT
I think I sent this message to the wrong list originally. I would really appreciate it if someone
could shed some light on the issue. I must be doing something wrong? Read below, thanks!


Kris Rasmussen <kristapestry@yahoo.com> wrote:Date: Sat, 9 Jul 2005 02:36:04 -0700 (PDT)
From: Kris Rasmussen <kristapestry@yahoo.com>
Subject: n+1 is triggering multiple queries, 3?
To: user-java@ibatis.apache.org

I have an n+1 mapping. When I look at mysql health in the administrator it apears that 3 queries
are being executed instead of one. The first query gets executed when I retrieve the intial
object via queryForObject. The next two queries are being executed when I attempt to access
the List which stores the related objects from the main object. I am very curious what is
going on since I don't know how Ibatis could even know what query to execute to get the items
later?
 
The following maps are used to retrive a single instance of classB with all of its classA
children stored in one of its properties which is of course a list.
 

<resultMap id="getClassAResult" class="classA">

... some basic properties

</resultMap>



<resultMap id="getClassBResult" class="classB">

<result property="primKey1" column="classB.primKey1"/>

<result property="primKey2" column="classB.primKey2"/>

... some more properties

</resultMap>



<resultMap id="getClassBWithClassAsResult" class="classB" extends="getClassBResult" groupBy="primKey1,primKey2">

<result property="classAs" resultMap="namespace.getClassAResult"/>

</resultMap>

 

and my select statement...

<select id="getClassBWithClassAs" parameterClass="keyClass" resultMap="getClassBWithClassAsResult">

SELECT classB.*,classA.* FROM classB ,classA

WHERE classB.primKey1=#primKey1# AND classB.primKey2=#primKey2# AND gallery_image.primKey1=#primKey1#
AND classA.primKey2=#primKey2#

GROUP BY classB.primKey1,classB.primKey2,classA.primKey3

</select>



__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 


		
---------------------------------
 Sell on Yahoo! Auctions  - No fees. Bid on great items.
Mime
View raw message