ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gareth Moorst <gazj...@yahoo.co.uk>
Subject RE: Custom Type Handler problems
Date Fri, 13 Jan 2006 14:59:56 GMT
It sounds like a very reasonable guess, it's what I thought might be happening - I was just
after confirmation that the type handler invocations is triggered by the property type and
not by the column type.

Any idea where in the iBatis codebase the object types are checked?
I've done a bit of digging, but I haven't found it yet.


"Fullam, Jonathan, ALABS" <jfullam@att.com> wrote:       Gareth,
 I'm  not completely sure how Ibatis handles this internally, but my guess is that  because
your resultClass is a HashMap and it takes Objects (not Strings  specifically), the handler
is not getting called.  If you think about it,  the HashMap could contain Integers depending
on what your sql returns.   Possibly, the type check for determing if a type handler should
be called is  occuring before any type conversions for populating the  HashMap.
 Hope  I've been helpful.
    -----Original Message-----
From: Gareth Moorst    [mailto:gazj2ee@yahoo.co.uk]
Sent: Friday, January 13, 2006 9:31    AM
To: user-java@ibatis.apache.org
Subject: Custom Type    Handler problems

    I seem to be having problems with a global type    handler (specified in my sqlmap-config.xml)
not being called when I don't    specifically set the java type or type handler in a resultmap.

For    instance, say I have the following in an sql map:

<select    id="getTariffCodes" resultClass="java.util.HashMap">
select tar_code,    tar_description from tariffs
and the following    type handler set in my global config file:

<typeHandler    javaType="java.lang.String"    callback="com.phones4u.datamanagement.datamodel.ibatis.typehandler.StringTrimTypeHandler"/>

When    I call the select, my global type handler is ignored even though the objects    returned
from the database are of type java.lang.String.
I can make it work    if I add a resultmap as follows:

<resultMap    class="java.util.HashMap" id="tariffCodeResult">
       <result property="tar_code" javaType="string"/>
       <result property="tar_description"    javaType="string"/>

So it's not really a    showstopper, but it was unexpected - is iBatis supposed to work like

I'd like to be able to specify the Type Handler to use globally    for all objects of a type
without having to go through and alter all of my    simple selects - is this possible?

Gareth Moorst


   Yahoo!    Messenger NEW - crystal clear PC to PC calling    worldwide with voicemail 

To help you stay safe and secure online, we've developed the all new Yahoo! Security Centre.
View raw message