ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Nathan Maves <Nathan.Ma...@Sun.COM>
Subject Bug with CTH and order of a ResultMap
Date Thu, 03 Mar 2005 16:46:33 GMT
Team,

I know that this was not the intended way to use CTH but it works 99% 
of the time!

The 1% of the time that it fails is really strange.  It will only fail 
if the column before it in the result map is null.  In the example 
below I can get it to work if I move the line

	<result property="timeZone" column="time_zone"/>

after a result that is NOT null.

I am not sure why this is happening.  I thought that the order of the 
result map meant nothing.

Nathan

SqlMapConfig

	<typeAlias alias="TimeZone" 
type="giveservice.domain.definitions.TimeZone"/>

     <typeHandler javaType="TimeZone" 
callback="giveservice.dao.ibatis.typeHandler.TimeZoneCTH"/>


CTH
	public class TimeZoneCTH implements TypeHandlerCallback {

     public Object getResult(ResultGetter getter) throws SQLException {
         if (getter.wasNull())
             return null;
         int value = getter.getInt();
         return TimeZone.findEnumeration(value);
     }

     public void setParameter(ParameterSetter setter, Object parameter) 
throws SQLException {
         if (parameter == null) {
             setter.setNull(Types.INTEGER);
         } else {
             TimeZone param = (TimeZone) parameter;
             setter.setInt(param.getDatabaseId());
         }
     }

     public Object valueOf(String s){
         return s;
     }

}

ResultMap Working

	<resultMap id="simpleRequestResultMap" class="Request">
         <result property="id" column="id"/>
         ...
         <result property="partner" column="partner"/>
         <result property="partnerName" column="partner_name"/>
         <result property="partnerEmail" column="partner_email"/>
         <result property="partnerPhone" column="partner_phone"/>
         <result property="contractNumber" column="contract_number"/>
         <result property="timeZone" column="time_zone"/>
         ...
     </resultMap>

ResultMap NOT Working! < Notice the order in regards to the time_zone 
column >

	<resultMap id="simpleRequestResultMap" class="Request">
         <result property="id" column="id"/>
         ...
         <result property="partner" column="partner"/>
         <result property="partnerName" column="partner_name"/>
         <result property="partnerEmail" column="partner_email"/>
         <result property="partnerPhone" column="partner_phone"/>
		<result property="timeZone" column="time_zone"/>
         <result property="contractNumber" column="contract_number"/>
         ...
     </resultMap>


Mime
View raw message