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 Landry Soules <la...@gmail.com> on 2006/11/01 23:19:40 UTC

Complex properties on insert

Hello,

I'm a newbie and couldn't find a single example of how to manage complex 
properties on insert ?

Heres is what i try to do :

I have 2 classes : Address and Country.
In the relation, of course one address has one country.

Country is a stand-alone class, while Address has a property  of type 
Country, something like this :

public class Address ....
private Country country ......

In the mapping :

 <resultMap class="com.myhome.Address" id="abatorgenerated_AddressResult">
 
 <result column="id" jdbcType="INTEGER" property="id"/>
    <result column="add1" jdbcType="VARCHAR" property="add1"/>
    <result column="add2" jdbcType="VARCHAR" property="add2"/>
    <result column="city" jdbcType="VARCHAR" property="city"/>
    <result column="zip_code" jdbcType="VARCHAR" property="zipCode"/>
    <result column="state" jdbcType="INTEGER" property="state"/>
    <result column="country" property="country" 
select="address.getCountry"/>
   </resultMap>
  
     <resultMap id="country-result" class="com.seenxl.model.Country">
  <result column="id" jdbcType="CHAR" property="id"/>
    <result column="iso3" jdbcType="CHAR" property="iso3"/>
    <result column="name" jdbcType="CHAR" property="name"/>
    <result column="num_code" jdbcType="SMALLINT" property="numCode"/>
    <result column="printable_name" jdbcType="CHAR" 
property="printableName"/>
</resultMap>




I have no problem to select an address, but i can't make an insert work.
I there a trick i have skipped  or can you point me to a sample code, 
thank you.


Re: Complex properties on insert

Posted by Landry Soules <la...@gmail.com>.
Thanks a lot, guys !
The sample code Christian gave me is exactly what i was looking for.


Poitras Christian a écrit :
> Yes.
>
> To access complex properties, it is as simple as writing property access
> for BeanUtils.
> Like this :
> <insert id="insertAdress" parameterClass="Address">
> INSERT INTO Address(id, countryId)
> VALUES (#id#, #country.id#)
> </insert>
>
> -----Original Message-----
> From: Carlos Cajina [mailto:cecajina@hotmail.com] 
> Sent: Wednesday, 01 November 2006 18:02
> To: user-java@ibatis.apache.org
> Subject: Re: Complex properties on insert
>
> Hi Landry,
>
> >From what I understand, you'll have to do the inserts one by one: first
> the parent object and then its children...
>
> Am I right guys?
>
> Regards,
> ______________________________
> Carlos
> ----- Original Message -----
> From: "Landry Soules" <la...@gmail.com>
> To: <us...@ibatis.apache.org>
> Sent: Wednesday, November 01, 2006 4:19 PM
> Subject: Complex properties on insert
>
>
>   
>> Hello,
>>
>> I'm a newbie and couldn't find a single example of how to manage
>>     
> complex 
>   
>> properties on insert ?
>>
>> Heres is what i try to do :
>>
>> I have 2 classes : Address and Country.
>> In the relation, of course one address has one country.
>>
>> Country is a stand-alone class, while Address has a property  of type 
>> Country, something like this :
>>
>> public class Address ....
>> private Country country ......
>>
>> In the mapping :
>>
>> <resultMap class="com.myhome.Address"
>>     
> id="abatorgenerated_AddressResult">
>   
>> <result column="id" jdbcType="INTEGER" property="id"/>
>>    <result column="add1" jdbcType="VARCHAR" property="add1"/>
>>    <result column="add2" jdbcType="VARCHAR" property="add2"/>
>>    <result column="city" jdbcType="VARCHAR" property="city"/>
>>    <result column="zip_code" jdbcType="VARCHAR" property="zipCode"/>
>>    <result column="state" jdbcType="INTEGER" property="state"/>
>>    <result column="country" property="country" 
>> select="address.getCountry"/>
>>   </resultMap>
>>  <resultMap id="country-result" class="com.seenxl.model.Country">
>>  <result column="id" jdbcType="CHAR" property="id"/>
>>    <result column="iso3" jdbcType="CHAR" property="iso3"/>
>>    <result column="name" jdbcType="CHAR" property="name"/>
>>    <result column="num_code" jdbcType="SMALLINT" property="numCode"/>
>>    <result column="printable_name" jdbcType="CHAR" 
>> property="printableName"/>
>> </resultMap>
>>
>>
>>
>>
>> I have no problem to select an address, but i can't make an insert
>>     
> work.
>   
>> I there a trick i have skipped  or can you point me to a sample code, 
>> thank you.
>>
>>
>>     
>
>
>
>   


RE: Complex properties on insert

Posted by Poitras Christian <Ch...@ircm.qc.ca>.
Yes.

To access complex properties, it is as simple as writing property access
for BeanUtils.
Like this :
<insert id="insertAdress" parameterClass="Address">
INSERT INTO Address(id, countryId)
VALUES (#id#, #country.id#)
</insert>

-----Original Message-----
From: Carlos Cajina [mailto:cecajina@hotmail.com] 
Sent: Wednesday, 01 November 2006 18:02
To: user-java@ibatis.apache.org
Subject: Re: Complex properties on insert

Hi Landry,

>From what I understand, you'll have to do the inserts one by one: first
the parent object and then its children...

Am I right guys?

Regards,
______________________________
Carlos
----- Original Message -----
From: "Landry Soules" <la...@gmail.com>
To: <us...@ibatis.apache.org>
Sent: Wednesday, November 01, 2006 4:19 PM
Subject: Complex properties on insert


> Hello,
>
> I'm a newbie and couldn't find a single example of how to manage
complex 
> properties on insert ?
>
> Heres is what i try to do :
>
> I have 2 classes : Address and Country.
> In the relation, of course one address has one country.
>
> Country is a stand-alone class, while Address has a property  of type 
> Country, something like this :
>
> public class Address ....
> private Country country ......
>
> In the mapping :
>
> <resultMap class="com.myhome.Address"
id="abatorgenerated_AddressResult">
>
> <result column="id" jdbcType="INTEGER" property="id"/>
>    <result column="add1" jdbcType="VARCHAR" property="add1"/>
>    <result column="add2" jdbcType="VARCHAR" property="add2"/>
>    <result column="city" jdbcType="VARCHAR" property="city"/>
>    <result column="zip_code" jdbcType="VARCHAR" property="zipCode"/>
>    <result column="state" jdbcType="INTEGER" property="state"/>
>    <result column="country" property="country" 
> select="address.getCountry"/>
>   </resultMap>
>  <resultMap id="country-result" class="com.seenxl.model.Country">
>  <result column="id" jdbcType="CHAR" property="id"/>
>    <result column="iso3" jdbcType="CHAR" property="iso3"/>
>    <result column="name" jdbcType="CHAR" property="name"/>
>    <result column="num_code" jdbcType="SMALLINT" property="numCode"/>
>    <result column="printable_name" jdbcType="CHAR" 
> property="printableName"/>
> </resultMap>
>
>
>
>
> I have no problem to select an address, but i can't make an insert
work.
> I there a trick i have skipped  or can you point me to a sample code, 
> thank you.
>
> 



Re: Complex properties on insert

Posted by Carlos Cajina <ce...@hotmail.com>.
Hi Landry,

>From what I understand, you'll have to do the inserts one by one: first the 
parent object and then its children...

Am I right guys?

Regards,
______________________________
Carlos
----- Original Message ----- 
From: "Landry Soules" <la...@gmail.com>
To: <us...@ibatis.apache.org>
Sent: Wednesday, November 01, 2006 4:19 PM
Subject: Complex properties on insert


> Hello,
>
> I'm a newbie and couldn't find a single example of how to manage complex 
> properties on insert ?
>
> Heres is what i try to do :
>
> I have 2 classes : Address and Country.
> In the relation, of course one address has one country.
>
> Country is a stand-alone class, while Address has a property  of type 
> Country, something like this :
>
> public class Address ....
> private Country country ......
>
> In the mapping :
>
> <resultMap class="com.myhome.Address" id="abatorgenerated_AddressResult">
>
> <result column="id" jdbcType="INTEGER" property="id"/>
>    <result column="add1" jdbcType="VARCHAR" property="add1"/>
>    <result column="add2" jdbcType="VARCHAR" property="add2"/>
>    <result column="city" jdbcType="VARCHAR" property="city"/>
>    <result column="zip_code" jdbcType="VARCHAR" property="zipCode"/>
>    <result column="state" jdbcType="INTEGER" property="state"/>
>    <result column="country" property="country" 
> select="address.getCountry"/>
>   </resultMap>
>  <resultMap id="country-result" class="com.seenxl.model.Country">
>  <result column="id" jdbcType="CHAR" property="id"/>
>    <result column="iso3" jdbcType="CHAR" property="iso3"/>
>    <result column="name" jdbcType="CHAR" property="name"/>
>    <result column="num_code" jdbcType="SMALLINT" property="numCode"/>
>    <result column="printable_name" jdbcType="CHAR" 
> property="printableName"/>
> </resultMap>
>
>
>
>
> I have no problem to select an address, but i can't make an insert work.
> I there a trick i have skipped  or can you point me to a sample code, 
> thank you.
>
>