You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ibatis.apache.org by "Mohamed Arif (JIRA)" <ib...@incubator.apache.org> on 2006/02/09 14:20:59 UTC
[jira] Commented: (IBATIS-156) configured type handler not used in
insert
[ 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