I´ve checked my code and I think I am doing something wrong in my resultMap,
but I don´t know how to solve it...
<resultMap id="mapElementos" class="elemento">
<result property="id" column="ID"/>
<result property="name" column="NAME"/>
<result property="atrib_id" column="ATRIB_ID"
select="getAtributos"/>
</resultMap>
In my old resultMap I had
<result property="atrib_id" column="ATRIB_ID" select="getAtributos"/>
and atrib_id is not an ArrayList<Atrib>
Now I have as property atrib_ which is an ArrayList<Atrib> and it gets the
Attributes with the function getAtributos. But there is no column for this .
<result property="atrib_" column="????" select="getAtributos" />
If I put as column ATRIB_ID (which is not an ArrayList<Atrib>), then I
obtain the error
Error setting property 'setAtrib_' ... Cause:
java.lang.IllegalArgumentException: argument type mismatch
Any idea? Thanks
From: "Jeff Butler" <[EMAIL PROTECTED]>
Reply-To: [email protected]
To: [email protected]
Subject: Re: select doubt
Date: Thu, 19 Jul 2007 10:08:58 -0500
I belive the issue is that your setter isn't quite right. Should be like
this:
public void setAtrib_ (ArrayList<Atrib> atrib_) {this.atrib_ = atrib_;}
If you do it this way, iBATIS will know to expect multiple values for the
attributes.
Jeff Butler
On 7/19/07, Francisco Exposito Aguilera <[EMAIL PROTECTED]> wrote:
Hello,
I have another typical issue of a beginner!!!!!
I have two tables:
ELEM: id, name, atrib_id
ATRIB: id, name, value
In Elem java class I´ve defined
private ArrayList<Atrib> atrib_ = new ArrayList<Atrib>();
public void setAtrib_ (Atrib atrib) {atrib_.add(atrib);}
and in sqlMap I´ve defined:
<resultMap id="mapAtributos" class="atributo">
<result property="id" column="ID"/>
<result property="name" column="NAME"/>
<result property="value" column="VALUE"/>
</resultMap>
<resultMap id="mapElementos" class="elemento">
<result property="id" column="ID"/>
<result property="name" column="NAME"/>
<result property="atrib_id" column="ATRIB_ID"
select="getAtributos"
/>
</resultMap>
<select id="getElementosTransaccion" resultMap="mapElementos">
select * from ELEM where ATRIB_ID=#value#
</select>
<select id="getAtributos" resultMap="mapAtributos">
select * from ATRIB oat_oet_id=#oet_id#
</select>
All this works properly if I have only one attribute for every element,
but
if there are two attribute for any element, the I obtain the error:
Cause: java.sql.SQLException: Error: executeQueryForObject returned too
many
results.
I understand the error, but I am not able to find the solution!!! How
could
I solve it? Thanks
_________________________________________________________________
Un amor, una aventura, compañía para un viaje. Regístrate gratis en MSN Amor
& Amistad. http://match.msn.es/match/mt.cfm?pg=channel&tcid=162349