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) -->
<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) -->
<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>
|