[ http://issues.apache.org/jira/browse/IBATIS-156?page=comments#action_12365722 ]
Mohamed Arif commented on IBATIS-156: ------------------------------------- Hi, I am trying to work on TypeHandler as one of the column returned by my ResultSet is of type "CHAR". I am getting the following exception w.r.t TypeHandler, --- The error occurred in Policy.xml. --- The error occurred while applying a result map. --- Check the Policy.customerPolicyResult. --- Check the result mapping for the 'attValue' property. --- Cause: com.ibatis.sqlmap.client.SqlMapException: No type handler could be found to map the property 'attValue' to the column 'POLICY_ATTRIBUTE_VALUE'. One or both of the types, or the combination of types is not supported.; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException: --- The error occurred in Policy.xml. --- The error occurred while applying a result map. --- Check the Policy.customerPolicyResult. --- Check the result mapping for the 'attValue' property. Here are the configuration details, My Stored Procedure is, CREATE OR REPLACE PROCEDURE PR_RS_GET_POLICY_DETAILS ( PA_OUT_RETCURSOR OUT RS_GENERAL.REFCURSOR ) AS BEGIN OPEN PA_OUT_RETCURSOR FOR SELECT DET.CUSTOMER_ID as CUSTOMER_ID, DET.POLICY_ID as POLICY_ID, DET.POLICY_ATTRIBUTE_VALUE as POLICY_ATTRIBUTE_VALUE, EXCEP.RELATED_CUSTOMER_ID as RELATED_CUSTOMER_ID FROM RS_POLICY_DET DET, RS_POLICY_EXCEPTIONLIST_DET EXCEP WHERE DET.POLICY_ID = EXCEP.POLICY_ID(+) AND DET.CUSTOMER_ID = EXCEP.CUSTOMER_ID(+) ORDER BY DET.CUSTOMER_ID, DET.POLICY_ID; END PR_RS_GET_POLICY_DETAILS; / ***** > Here the column "POLICY_ATTRIBUTE_VALUE" is of type "CHAR". My SQLMapConfig file is as follow, ************************************* <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN" "http://www.ibatis.com/dtd/sql-map-config-2.dtd"> <sqlMapConfig> <typeAlias alias="charTypeHandler" type="com.rss.rs.common.dao.ibatisImpl.CharTypeHandlerCallback"/> <typeHandler javaType="java.lang.String" jdbcType="CHAR" callback="charTypeHandler"/> <sqlMap resource="Policy.xml"/> </sqlMapConfig> *********************************** My SQLMap file "Policy.xml" , <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd"> <sqlMap namespace="Policy"> <typeAlias alias="policyRS" type="com.rsa.rcas.common.dto.PolicyRS"/> <resultMap id="customerPolicyResult" class="policyRS"> <result property="customerID" column="CUSTOMER_ID" /> <result property="policyID" column="POLICY_ID" /> <result property="attValue" column="POLICY_ATTRIBUTE_VALUE" jdbcType="CHAR"/> <result property="relatedCustomerid" column="RELATED_CUSTOMER_ID" /> </resultMap> <parameterMap id="policySPInput" class="map" > <parameter property="PA_OUT_RETCURSOR" jdbcType="ORACLECURSOR" mode="OUT"/> </parameterMap> <procedure id="getPolicyDetail" parameterMap="policySPInput" resultMap="customerPolicyResult"> { call PR_RCAS_GET_POLICY_DETAILS (?) } </procedure> </sqlMap> *************************** My TypeHandler class "CharTypeHandlerCallback.java", import java.sql.SQLException; import java.sql.Types; import com.ibatis.sqlmap.client.extensions.ParameterSetter; import com.ibatis.sqlmap.client.extensions.ResultGetter; import com.ibatis.sqlmap.client.extensions.TypeHandlerCallback; public class CharTypeHandlerCallback implements TypeHandlerCallback { public Object getResult(ResultGetter getter) throws SQLException { System.out.println("Inside getResult"); if(getter.wasNull()) return null; return getter.getString(); } public void setParameter(ParameterSetter setter, Object parameter) throws SQLException { System.out.println("Inside setParameter"); if (parameter == null) { setter.setNull(Types.CHAR); } else { setter.setString((String)parameter.toString()); } } public Object valueOf(String s) { System.out.println("Inside valueOf"); return s; } } ************************************* ResultMap class "PolicyRS.java" public class PolicyRS { private long customerID; private long policyID; private char attValue; private long relatedCustomerid; public char getAttValue() { return attValue; } public void setAttValue(char attValue) { this.attValue = attValue; } public long getCustomerID() { return customerID; } public void setCustomerID(long customerID) { this.customerID = customerID; } public long getPolicyID() { return policyID; } public void setPolicyID(long policyID) { this.policyID = policyID; } public long getRelatedCustomerid() { return relatedCustomerid; } public void setRelatedCustomerid(long relatedCustomerid) { this.relatedCustomerid = relatedCustomerid; } } ******************** Kindly help to solve this issue, i need to map my resultSet to the above class. Thanks in Advance, RF > configured type handler not used in insert > ------------------------------------------ > > Key: IBATIS-156 > URL: http://issues.apache.org/jira/browse/IBATIS-156 > Project: iBatis for Java > Type: Bug > Components: SQL Maps > Versions: 2.1.0 > Environment: linux, java 1.5 > Reporter: Jim Newsham > Assignee: Clinton Begin > Priority: Minor > Fix For: 2.1.5 > > Custom type handlers which are configured within SqlMapConfig, such as: > <typeHandler javaType='java.lang.Boolean' jdbcType='CHAR' > callback='com...BooleanTypeHandler'/> > are working properly and automatically to convert types for queries. However > for inserts, the type conversion is not being called based on the above type > handler mapping. We have confirmed this behavior by placing debug print > statements in the methods of the type handler being used. > What does work, and what we're currently using as a workaround, is to use an > explicit, inline type handler within the insert map (such as > #private,handler=com...BooleanTypeHandler#). -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira