I came across the issue when I used TypeHandler in <resultMap> and I believe
it’s a bug. Here is the case:
There’re two columns, “date_read” and “date_created” in the “messages” table
(MySql database), they are type of “Datetime” and “Timestamp” respectively.
I was trying to convert them to string using type handler
(SimsDateToCharTypeHandler). 

<typeAlias alias="myDateToChar"
type="myPackage.util.SimsDateToCharTypeHandler" />

<resultMap id="messageInfoResult" class="myPackage.MassageInfo">    
        <result property="dateRead" column="date_read"
typeHandler="myDateToChar "/>
        <result property="dateCreated" column="date_created"
typeHandler="myDateToChar "/>

    <!-- more mapping -->
</resultMap>


<select id="getMessagesByUserName" resultMap="messageInfoResult" >
SELECT 
    date_read, date_created
FROM messages
</select>

“date_read” can be “null” value but “date_created” is always populated with
“current time” in database. When the order of elements in <resultMap> is as
above and if “date_read” is NULL,  “dateCreated” property in “MassageInfo”
object will be NULL. This is not right since “date_created” HAS value so
that “dateCreated” property should be something like “07/01/2006 11:30”,
rather than “NULL”.

However if I reverse the order of elements in <resultMap>, i.e.,
<resultMap id="messageInfoResult" class="myPackage.MassageInfo">  
<!-- order of these two is reversed -->
        <result property="dateCreated" column="date_created"
typeHandler="myDateToChar "/>  
        <result property="dateRead" column="date_read"
typeHandler="myDateToChar "/>          
    <!-- more mapping -->
</resultMap>

Then I’ll get correct result, e.g., dateCreated could be “07/01/2006” but
“dateRead” is null. 

The iBatis version is 2, I’m not sure if you’ve fixed it in the latest
version.
-- 
View this message in context: 
http://www.nabble.com/iBatis-bug-report-tf3995995.html#a11348464
Sent from the iBATIS - Dev mailing list archive at Nabble.com.

Reply via email to