Hi everyone, Im having an issue while trying to submit an Array of Objects to an Oracle Stored procedure.
The map file looks like: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd"> <sqlMap namespace="Converter"> <typeAlias alias="keywordItems" type="ch.generali.converter.bean.KeywordItem" /> <resultMap id="keywordsResult" class="ch.generali.converter.bean.KeywordItem"> <result property="key" jdbcType="VARCHAR" javaType="java.lang.String" column="KEY"/> <result property="value" jdbcType="VARCHAR" javaType="java.lang.String" column="VALUE"/> </resultMap> <parameterMap id="getKeywordParam" class="ch.generali.converter.bean.Keyword"> <parameter property="keywords" typeHandler="ch.generali.converter.dao.KeywordTypeHandlerCallback" javaType="java.util.List" jdbcType="VVEVER.KEYWORD_TAB" typeName="VVEVER.KEYWORD_TAB" mode="INOUT" /> <parameter property="language" jdbcType="NUMERIC" mode="IN" javaType="java.lang.Integer" /> <parameter property="vertragsnr" jdbcType="VARCHAR" mode="IN" javaType="java.lang.String" /> </parameterMap> <procedure id="getKeyword" parameterMap="getKeywordParam"> {call vvever.pck_ev_textbaustein_liste.ip_get_textbaustein_liste(?,?,?,?)} </procedure> </sqlMap> my TypeHandlerCallback class looks like: package ch.generali.converter.dao; import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import org.apache.commons.dbcp.PoolableConnection; import oracle.jdbc.driver.OracleConnection; import oracle.jdbc.internal.OracleTypes; import oracle.sql.ARRAY; import oracle.sql.ArrayDescriptor; import ch.generali.converter.bean.Keyword; import ch.generali.converter.bean.KeywordItem; import com.ibatis.sqlmap.client.extensions.ParameterSetter; import com.ibatis.sqlmap.client.extensions.ResultGetter; import com.ibatis.sqlmap.client.extensions.TypeHandlerCallback; import com.ibatis.sqlmap.engine.type.JdbcTypeRegistry; public class KeywordTypeHandlerCallback implements TypeHandlerCallback { static { JdbcTypeRegistry.setType("VVEVER.KEYWORD_ITEM", OracleTypes.STRUCT); JdbcTypeRegistry.setType("VVEVER.KEYWORD_TAB", OracleTypes.ARRAY); } public Object getResult(ResultGetter getter) throws SQLException { // TODO Auto-generated method stub return null; } public void setParameter(ParameterSetter setter, Object parameter) throws SQLException { Statement stmt = setter.getPreparedStatement(); Connection conn = stmt.getConnection(); // Map<String, String> parameterMap = (HashMap<String, String>)parameter; List<KeywordItem> keywordItems = (List<KeywordItem>) parameter; KeywordItem[] keywordArray = new KeywordItem[keywordItems.size()]; for (int i = 0; i < keywordArray.length; i++) { keywordArray[i] = keywordItems.get(i); } PoolableConnection pc = (PoolableConnection)conn; OracleConnection oc = (OracleConnection)pc.getDelegate(); Map map = oc.getTypeMap(); map.put("VVEVER.KEYWORD_ITEM",KeywordItem.class); ArrayDescriptor desc = ArrayDescriptor.createDescriptor("VVEVER.KEYWORD_TAB", oc); this is where it fails --> ARRAY array = new ARRAY(desc, oc,keywordArray); setter.setArray(array); } public Object valueOf(String s) { // TODO Auto-generated method stub return null; } } The KeywordItem looks like: public class KeywordItem { public String key; public String value; public String getKey() { return key; } public void setKey(String key) { this.key = key; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } } And the Object type in Oracle like: CREATE type keyword_item AS object ( key VARCHAR2(20) , value VARCHAR2(1000) ); / create or replace type keyword_tab as table of keyword_item; What could cause this behavour? --------------------------------------------------------------------- To unsubscribe, e-mail: user-java-unsubscr...@ibatis.apache.org For additional commands, e-mail: user-java-h...@ibatis.apache.org