You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-cs@ibatis.apache.org by Troy Gaines <tj...@gmail.com> on 2008/02/23 23:07:08 UTC

ResultMap

I am trying to define a custom type handler for a State object using 1.6.1.


I keep on getting the following error:
IBatisNet.Common.Exceptions.ConfigurationException : Error registering
TypeHandler class "StateType" for handling .Net type "state" and dbType
"varchar". Cause: Could not load type from string value 'state'.
  ----> System.TypeLoadException : Could not load type from string value
'state'.

I have posted the SqlMapConfig.xml file and the actual mapping file.  I have
highlighted the relevant statements.  I'm sure they are in the right
assembly as I have verified this though Reflector and through code.  Does
anyone know why I'm getting this message?  Thanks in advance!

*<!-- SQL Map Config (SqlMapConfig.xml) -->*
<?xml version="1.0" encoding="utf-8"?>
<sqlMapConfig
  xmlns="http://ibatis.apache.org/dataMapper"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <settings>
    <setting useStatementNamespaces="true"/>
    <setting validateSqlMap="true"/>
    <setting cacheModelsEnabled="true"/>
  </settings>
  <providers resource="providers.config"/>
  <database>
    <provider name="OleDb2.0"/>
    <dataSource name="jobTrackDataSource" connectionString="Provider=
Microsoft.Jet.OLEDB.4.0;Data Source=JobTrack.mdb"/>
  </database>
  <alias>
    <typeAlias alias="PhoneType" type="
TGaines.Model.Dao.Ibatis.PhoneTypeHandlerCallback,TGaines.Model"/>
*    <typeAlias alias="StateType" type="
TGaines.Model.Dao.Ibatis.StateTypeHandlerCallback,TGaines.Model"/>*
  </alias>
  <typeHandlers>
    *<typeHandler type="state" dbType="varchar" callback="StateType"/>
*    <typeHandler type="phone" dbType="varchar" callback="PhoneType"/>
  </typeHandlers>
  <sqlMaps>
    <sqlMap resource="Customer.xml"/>
  </sqlMaps>
</sqlMapConfig>

*<!-- SQL Map Xml (Customer.xml) -->*
<?xml version="1.0" encoding="UTF-8" ?>
<sqlMap namespace="Customer"
xmlns="http://ibatis.apache.org/mapping"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
  <alias>
    <typeAlias alias="Customer" type="TGaines.JobTrack.Model.Customer,
TGaines.JobTrack" />
  </alias>
  <resultMaps>
    <resultMap id="CustomerResult" class="Customer">
      <result property="Id" column="ID" type="int" dbType="Int"/>
      <result property="LastName" column="LAST_NAME" type="string"
dbType="varchar"/>
      <result property="FirstName" column="FIRST_NAME" type="string"
dbType="varchar"/>
      <result property="MiddleName" column="MIDDLE_NAME" type="string"
dbType="varchar"/>
      <result property="BirthDate" column="BIRTH_DATE" type="System.DateTime"
dbType="dateTime"/>
      <result property="Email" column="EMAIL" type="string"
dbType="varchar"/>
      <result property="City" column="CITY" type="string" dbType="varchar"/>
      <result property="AddressLine" column="ADDRESS" type="string"
dbType="varchar"/>
      <result property="Zip" column="ZIP_CODE" type="string"
dbType="varchar"/>
      *<result property="State" column="STATE" dbType="varchar"
type="state"/>*
      <result property="WorkPhone" column="WORK_PHONE" type="phone"/>
      <result property="HomePhone" column="HOME_PHONE" type="phone"/>
      <result property="CellPhone" column="CELL_PHONE" type="phone"/>
    </resultMap>
  </resultMaps>
  <statements>
    <select id="SelectCustomer" parameterClass="string"
resultClass="Customer">
      SELECT ID AS Id,LAST_NAME AS LastName,FIRST_NAME AS
FirstName,MIDDLE_NAME AS MiddleName,BIRTH_DATE AS BirthDate,EMAIL AS
Email,CITY AS City,ADDRESS AS AddressLine,ZIP_CODE AS Zip,*STATE as
State*,WORK_PHONE
as WorkPhone,HOME_PHONE as HomePhone,CELL_PHONE as CellPhone
      FROM CUSTOMER
      <dynamic prepend="WHERE">
        <isParameterPresent>
          ID = #value#
        </isParameterPresent>
      </dynamic>
    </select>
    <insert id="InsertCustomer" parameterClass="Customer">
      INSERT INTO CUSTOMER

(LAST_NAME,FIRST_NAME,MIDDLE_NAME,BIRTH_DATE,EMAIL,CITY,STATE,ADDRESS,ZIP_CODE,WORK_PHONE,HOME_PHONE,CELL_PHONE)

VALUES(#LastName#,#FirstName#,#MiddleName#,#BirthDate#,#Email#,#City#,#State.Abbreviation#,#AddressLine#,#Zip#,#WorkPhone.FormattedNumber#,#HomePhone.FormattedNumber#,#CellPhone.FormattedNumber#)
      <selectKey resultClass="int" type="post" property="Id">
        SELECT @@IDENTITY
      </selectKey>
    </insert>
    <update id="UpdateCustomer" parameterClass="Customer">
      UPDATE CUSTOMER
      SET
LAST_NAME=#LastName#,FIRST_NAME=#FirstName#,MIDDLE_NAME=#MiddleName#,BIRTH_DATE=#BirthDate#,EMAIL=#Email#,CITY=#City#,STATE=#State.Abbreviation#,ADDRESS=#AddressLine#,ZIP_CODE=#Zip#,WORK_PHONE=#WorkPhone.FormattedNumber#,HOME_PHONE=#HomePhone.FormattedNumber#,CELL_PHONE=#CellPhone.FormattedNumber#
      WHERE ID = #Id#
    </update>
    <delete id="DeleteCustomer" parameterClass="string">
      DELETE FROM CUSTOMER
      WHERE ID = #value#
    </delete>
  </statements>
</sqlMap>

RE: ResultMap

Posted by Dick Harper <dh...@pioneersystems.net>.
I keep removing my email address from this group but I start getting emails
after a few weeks. Can you check on this for me?

 

Thanks

 

From: Gilles Bayon [mailto:ibatis.net@gmail.com] 
Sent: Sunday, February 24, 2008 5:14 AM
To: user-cs@ibatis.apache.org
Subject: Re: ResultMap

 

A typeHandler is a relation between a dotnet primitive type (int,
string....) and a dbtype so your config you be somelike
<typeHandler type="string" dbType="varchar" callback="StateType"/>


-- 
Cheers,
Gilles


Re: ResultMap

Posted by Gilles Bayon <ib...@gmail.com>.
A typeHandler is a relation between a dotnet primitive type (int,
string....) and a dbtype so your config you be somelike
*<typeHandler type="string" dbType="varchar" callback="StateType"/>*


-- 
Cheers,
Gilles