Dear Ingmar Lötzsch,


                Still, I am facing the problem  for inserting array field
through  iBatis..
Current error list as  follows...

Errors List in insert groups::::::::::::::SqlMapClient operation;
uncategorized SQLException for SQL []; SQL state [null]; error code [0];   
--- The error occurred in org/ada/kms/sqlmap/KmsgroupSQLMap.xml.  
--- The error occurred while applying a parameter map.  
--- Check the kmsgroups.insertgroups-InlineParameterMap.  
--- Check the parameter mapping for the 'kmsgrpaccessiblegroup' property.  
--- Cause: java.lang.ClassCastException: org.ada.kms.domain.IntArray cannot
be cast to java.util.Collection; nested exception is
com.ibatis.common.jdbc.exception.NestedSQLException:   
--- The error occurred in org/ada/kms/sqlmap/KmsgroupSQLMap.xml.  
--- The error occurred while applying a parameter map.  
--- Check the kmsgroups.insertgroups-InlineParameterMap.  
--- Check the parameter mapping for the 'kmsgrpaccessiblegroup' property.  
--- Cause: java.lang.ClassCastException: org.ada.kms.domain.IntArray cannot
be cast to java.util.Collection


If you get any idea please sent me immediately......

Ingmar Lötzsch wrote:
> 
> Look at the stacktrace:
> 
>> Caused by: com.ibatis.common.jdbc.exception.NestedSQLException:
>> --- The error occurred in org/ada/kms/sqlmap/KmsgroupSQLMap.xml.
>> --- The error occurred while applying a parameter map.
>> --- Check the kmsgroups.insertgroups-InlineParameterMap.
>> --- Check the parameter mapping for the 'kmsgroupactive' property.
> 
> The INSERT failed because of an NullPointerException.
> 
> Seems this is related to property kmsgroupactive.
> 
> What type is kmsgroupactive?
> 
> What is the actual value of kmsgroupactive during excution?
> 
> Set a breakpoint in your DAO and inspect the parameters.
> 
> Seems your problem is not related to the array.
> 
> jishnu123 schrieb:
>> 
>> Hai,
>> 
>> Thank you for your reply....I got exception details as follows.....please
>> reply immediately...
>> 
>> org.springframework.jdbc.UncategorizedSQLException: SqlMapClient
>> operation;
>> uncategorized SQLException for SQL []; SQL state [null]; error code [0];   
>> --- The error occurred in org/ada/kms/sqlmap/KmsgroupSQLMap.xml.  
>> --- The error occurred while applying a parameter map.  
>> --- Check the kmsgroups.insertgroups-InlineParameterMap.  
>> --- Check the parameter mapping for the 'kmsgroupactive' property.  
>> --- Cause: java.lang.NullPointerException; nested exception is
>> com.ibatis.common.jdbc.exception.NestedSQLException:   
>> --- The error occurred in org/ada/kms/sqlmap/KmsgroupSQLMap.xml.  
>> --- The error occurred while applying a parameter map.  
>> --- Check the kmsgroups.insertgroups-InlineParameterMap.  
>> --- Check the parameter mapping for the 'kmsgroupactive' property.  
>> --- Cause: java.lang.NullPointerException
>> Caused by: com.ibatis.common.jdbc.exception.NestedSQLException:   
>> --- The error occurred in org/ada/kms/sqlmap/KmsgroupSQLMap.xml.  
>> --- The error occurred while applying a parameter map.  
>> --- Check the kmsgroups.insertgroups-InlineParameterMap.  
>> --- Check the parameter mapping for the 'kmsgroupactive' property.  
>> --- Cause: java.lang.NullPointerException
>>      at
>> com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeUpdate(MappedStatement.java:110)
>>      at
>> com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.insert(SqlMapExecutorDelegate.java:393)
>>      at
>> com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.insert(SqlMapSessionImpl.java:82)
>>      at
>> org.springframework.orm.ibatis.SqlMapClientTemplate$9.doInSqlMapClient(SqlMapClientTemplate.java:370)
>>      at
>> org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:194)
>>      at
>> org.springframework.orm.ibatis.SqlMapClientTemplate.insert(SqlMapClientTemplate.java:368)
>>      at
>> org.ada.kms.daoimpl.KmsAddServiceImpl.insertGroups(KmsAddServiceImpl.java:98)
>>      at
>> org.ada.kms.formcontrollers.KmsGroupsFormController.onSubmit(KmsGroupsFormController.java:70)
>>      at
>> org.springframework.web.servlet.mvc.SimpleFormController.processFormSubmission(SimpleFormController.java:267)
>>      at
>> org.springframework.web.servlet.mvc.AbstractFormController.handleInvalidSubmit(AbstractFormController.java:671)
>>      at
>> org.springframework.web.servlet.mvc.AbstractFormController.handleRequestInternal(AbstractFormController.java:272)
>>      at
>> org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
>>      at
>> org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
>>      at
>> org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:859)
>>      at
>> org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:793)
>>      at
>> org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:476)
>>      at
>> org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:441)
>>      at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
>>      at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
>>      at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
>>      at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>>      at
>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
>>      at
>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
>>      at
>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
>>      at
>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>>      at
>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>>      at
>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
>>      at
>> org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:852)
>>      at
>> org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:584)
>>      at
>> org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1508)
>>      at java.lang.Thread.run(Thread.java:619)
>> Caused by: java.lang.NullPointerException
>>      at
>> com.ibatis.sqlmap.engine.mapping.parameter.ParameterMap.setParameter(ParameterMap.java:166)
>>      at
>> com.ibatis.sqlmap.engine.mapping.parameter.ParameterMap.setParameters(ParameterMap.java:126)
>>      at
>> com.ibatis.sqlmap.engine.execution.SqlExecutor.executeUpdate(SqlExecutor.java:78)
>>      at
>> com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.sqlExecuteUpdate(MappedStatement.java:216)
>>      at
>> com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeUpdate(MappedStatement.java:94)
>>      ... 30 more
>> Errors List in insert groups::::::::::::::SqlMapClient operation;
>> uncategorized SQLException for SQL []; SQL state [null]; error code [0];   
>> --- The error occurred in org/ada/kms/sqlmap/KmsgroupSQLMap.xml.  
>> --- The error occurred while applying a parameter map.  
>> --- Check the kmsgroups.insertgroups-InlineParameterMap.  
>> --- Check the parameter mapping for the 'kmsgroupactive' property.  
>> --- Cause: java.lang.NullPointerException; nested exception is
>> com.ibatis.common.jdbc.exception.NestedSQLException:   
>> --- The error occurred in org/ada/kms/sqlmap/KmsgroupSQLMap.xml.  
>> --- The error occurred while applying a parameter map.  
>> --- Check the kmsgroups.insertgroups-InlineParameterMap.  
>> --- Check the parameter mapping for the 'kmsgroupactive' property.  
>> --- Cause: java.lang.NullPointerException
>> 
>> 
>> 
>> 
>> 
>> 
>> Ingmar Lötzsch wrote:
>>>>> INFO [org.springframework.beans.factory.xml.XmlBeanDefinitionReader]
>>> INFO does not mean there was thrown an exception.
>>>
>>> What exceptions do you get?
>>>
>>> Are you certain all methods are invoked?
>>>
>>> Can you set breakpoints in
>>>
>>> - KmsGroup.getKmsgrpaccessiblegroup()
>>> - ...DAO.insertGroups(KmsGroup kmsgroup)
>>>
>>> and debug the program?
>>>
>>> Consider to take all Java code out of the JSP. Nowadays it's a bad
>>> practice to intermingle HTML and Java code.
>>>
>>> When plain JDBC works, make a test with iBATIS only. When this works,
>>> make a test with Spring and iBATIS out of the webapp. When this works,
>>> test your webapp.
>>>
>>> Ingmar
>>>
>>> jishnu123 schrieb:
>>>> Dear Ingmar Lötzsch,
>>>>
>>>> Thank you for your reply.You send that  code is  working fine..Normal
>>>> code 
>>>> it was worked .
>>>> Problem for integration of spring mvc with iBatis....
>>>> I have  put some related code as follows....
>>>>
>>>> 1)My jsp page
>>>>
>>>> <td align="left"  width="200">
>>>>                                    <label for="Othergroups">Other 
>>>> Accessible Groups :</label>
>>>>                                    </td>
>>>>                            <td align="left" width="100"><select 
>>>> name="kmsgrpaccessiblegroups"
>>>>            class="hintanchor" onMouseover="showhint('Please choose  other 
>>>> groups
>>>> Should consist of drag and drop list.', this, event, '200px')"
>>>>            multiple="multiple" style="width: 140px" size="4">
>>>>                    <%
>>>>                                    for(int i=0; i<oGroupArraylist.size(); 
>>>> i++) {
>>>>                                        obKmsgroup = 
>>>> (KmsGroup)oGroupArraylist.get(i);
>>>>                                    %>
>>>>                    <option name="<%=obKmsgroup.getKmsgrpgroupname()%>"
>>>>                    
>>>> value="<%=obKmsgroup.getKmsgrpgroupid()%>"><%=obKmsgroup.getKmsgrpgroupname()%></option>
>>>>                    <%
>>>>                                    }
>>>>    
>>>>                                    %>
>>>>            </select></td>
>>>>
>>>> 2)domain class
>>>>
>>>>        private int[] kmsgrpaccessiblegroups;
>>>>    private IntArray kmsgrpaccessiblegroup;
>>>>    
>>>>    public IntArray getKmsgrpaccessiblegroup() {
>>>>        return kmsgrpaccessiblegroup;
>>>>    }
>>>>    public void setKmsgrpaccessiblegroup(IntArray kmsgrpaccessiblegroup) {
>>>>        this.kmsgrpaccessiblegroup = kmsgrpaccessiblegroup;
>>>>    }
>>>> public int[] getKmsgrpaccessiblegroups() {
>>>>        return kmsgrpaccessiblegroups;
>>>>    }
>>>>    public void setKmsgrpaccessiblegroups(int[] kmsgrpaccessiblegroups) {
>>>>        this.kmsgrpaccessiblegroups = kmsgrpaccessiblegroups;
>>>>        logger.info("setKmsgrpaccessiblegroups  set to "
>>>> +kmsgrpaccessiblegroups);
>>>>    }
>>>>
>>>> 3)FormController
>>>>
>>>> int[] arrayData=obkmsgroup.getKmsgrpaccessiblegroups();
>>>>    
>>>>            for(int i=0;i<arrayData.length;i++)
>>>>        System.out.println("The data of the array=="+arrayData[i]);
>>>>    IntArray intArray = new IntArray(arrayData);
>>>>    logger.info("INT ARRAY DETAILS=="+intArray);
>>>>    obkmsgroup.setKmsgrpaccessiblegroup(intArray);
>>>> 4)Dao Implementatiion
>>>>  public  void insertGroups(KmsGroup kmsgroup)throws Exception{
>>>>    logger.info("Start Executing query for insert kmsgroups");
>>>>    template.insert("kmsgroups.insertgroups",kmsgroup);
>>>>     }
>>>> 4)Mapping file
>>>> <typeAlias alias="IntArrayTypeHandler"
>>>> type="org.ada.kms.domain.IntArrayTypeHandler"/> 
>>>>   <insert id="insertgroups" parameterClass="kmsgroup">
>>>>                       
>>>>    INSERT INTO
>>>> kms.kms_group(kms_grp_groupid,kms_grp_groupname,kms_group_active,kms_grp_description,kms_grp_createdon,kms_grp_createdby,kms_grp_accessiblegroup)
>>>>  
>>>>       
>>>> VALUES(#kmsgrpgroupid#,#kmsgrpgroupname#,#kmsgroupactive#,#kmsgrpdescription#,#kmsgrpcreatedon#,#kmsgrpcreatedby#,
>>>>        #kmsgrpaccessiblegroup,handler=IntArrayTypeHandler#)
>>>>  
>>>>    </insert>
>>>>
>>>> 5)Alraedy implemented java beans  like IntArray,SqlArrayAdapter, and
>>>> IntArrayTypeHandler
>>>>
>>>>
>>>> The same message get the eclipse console as follows..
>>>>
>>>>> INFO [org.springframework.beans.factory.xml.XmlBeanDefinitionReader] -
>>>>> <Loading XML bean definitions from class path resource
>>>>> [org/springframework/jdbc/support/sql-error-codes.xml]>
>>>>>  INFO [org.springframework.jdbc.support.SQLErrorCodesFactory] -
>>>>> <SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, Informix, MS-SQL, MySQL,
>>>>> Oracle, PostgreSQL, Sybase]> 
>>>>  
>>>> Any idea u get please reply immediately....
>>>>
>>>> Ingmar Lötzsch wrote:
>>>>> Can you post the exceptions?
>>>>>
>>>>> Can you do the following:
>>>>>
>>>>> On SQL-client (Console/pgAdmin)
>>>>>
>>>>> CREATE TABLE arraytest
>>>>> (
>>>>>   id int NOT NULL PRIMARY KEY,
>>>>>   intarray int[] NOT NULL
>>>>> )
>>>>> WITHOUT OIDS;
>>>>>
>>>>> INSERT INTO arraytest (id, intarray) VALUES (1, ARRAY[1, 2]);
>>>>> INSERT INTO arraytest (id, intarray) VALUES (2, '{1, 3}' :: int[]);
>>>>>
>>>>> Can you than execute the following code using class IntArray:
>>>>>
>>>>> import java.sql.Connection;
>>>>> import java.sql.DriverManager;
>>>>> import java.sql.PreparedStatement;
>>>>>
>>>>> public class ArrayTest
>>>>> {
>>>>>   public static void main(String[] args)
>>>>>   {
>>>>>           try
>>>>>           {
>>>>>                   Class.forName("org.postgresql.Driver");
>>>>>                   String url = "jdbc:postgresql://localhost/test";
>>>>>                   Connection con = DriverManager.getConnection(url, 
>>>>> "postgres",
>>>>> "admin");
>>>>>                   
>>>>>                   String sql = "INSERT INTO arraytest (id, intarray) 
>>>>> VALUES (?, ?)";
>>>>>                   PreparedStatement pstmt = con.prepareStatement(sql);
>>>>>                   pstmt.setInt(1, 3);
>>>>>                   int[] ints = {2, 4};
>>>>>                   IntArray intArray = new IntArray(ints);
>>>>>                   pstmt.setArray(2, intArray);
>>>>>                   int rows = pstmt.executeUpdate();
>>>>>                   System.out.println(rows);
>>>>>                   pstmt.close();
>>>>>                   con.close();
>>>>>           }
>>>>>           catch (Exception e)
>>>>>           {
>>>>>                   e.printStackTrace(System.out);
>>>>>           }
>>>>>   }
>>>>> }
>>>>>
>>>>> Do you get any exceptions?
>>>>>
>>>>> jishnu123 schrieb:
>>>>>> I have already implemented all java beans with
>>>>>> SqlArrayAdapter,IntArray
>>>>>> and
>>>>>> IntArrayTypeHandler..But iam still facing the same
>>>>>> problem....Actually
>>>>>> i
>>>>>> had
>>>>>> implemented my project using spring mvc with iBatis..I think spring
>>>>>> MVC
>>>>>> problem...
>>>>>>
>>>>>> I again mention that particular error as follows....Any body have any
>>>>>> idea
>>>>>> to solve that problem... Please sent reply immediately... 
>>>>>>
>>>>>> INFO [org.springframework.beans.factory.xml.XmlBeanDefinitionReader]
>>>>>> -
>>>>>> <Loading XML bean definitions from class path resource
>>>>>> [org/springframework/jdbc/support/sql-error-codes.xml]>
>>>>>>  INFO [org.springframework.jdbc.support.SQLErrorCodesFactory] -
>>>>>> <SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, Informix, MS-SQL,
>>>>>> MySQL,
>>>>>> Oracle, PostgreSQL, Sybase]>
>>>>>>
>>>>>>
>>>>>> Rahul Saluja wrote:
>>>>>>> Hi Jishnu,
>>>>>>>
>>>>>>> I cannot understand anything by given exception but yes suggested
>>>>>>> implementation by Ingmar is rite approach and moreover which version
>>>>>>> of
>>>>>>> Postgres you are using as in 7.3.1 it is nlot possible to store the
>>>>>>> array
>>>>>>> data so better way of doing it is to convert the data in String and
>>>>>>> push
>>>>>>> it as varchar  and while retrieving back convert back it into your
>>>>>>> required datatype array here is the example you can use for
>>>>>>> insertion.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> import java.sql.SQLException;
>>>>>>> import java.sql.Types;
>>>>>>> import java.util.Vector;
>>>>>>>
>>>>>>> import com.hns.hss.nmf.common.util.unilogger.LogFactory;
>>>>>>> import com.hns.hss.nmf.common.util.unilogger.LoggerIf;
>>>>>>> import com.ibatis.sqlmap.client.extensions.ParameterSetter;
>>>>>>> import com.ibatis.sqlmap.client.extensions.ResultGetter;
>>>>>>> import com.ibatis.sqlmap.client.extensions.TypeHandlerCallback;
>>>>>>>
>>>>>>> public class ByteArrayToTimeStampHandler implements
>>>>>>> TypeHandlerCallback
>>>>>>> {
>>>>>>> private static LoggerIf log_ =
>>>>>>> LogFactory.getLoggerIf(ArraysToStringTypeHandler.class.getName());
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>         public Object getResult(ResultGetter arg0) throws
>>>>>>> SQLException
>>>>>>>         {
>>>>>>>                 // TODO Auto-generated method stub
>>>>>>>                 return null;
>>>>>>>         }
>>>>>>>
>>>>>>>
>>>>>>>         public void setParameter(ParameterSetter setter, Object
>>>>>>> parameter)
>>>>>>> throws SQLException
>>>>>>>         {
>>>>>>>                 if (parameter == null)
>>>>>>>                 {
>>>>>>>                         setter.setNull(Types.CHAR);
>>>>>>>                 }
>>>>>>>                 else
>>>>>>>                 {
>>>>>>>                         setter.setString(ArraysToString(parameter));
>>>>>>>                 }
>>>>>>>                 // TODO Auto-generated method stub
>>>>>>>
>>>>>>>         }
>>>>>>>
>>>>>>>
>>>>>>>         public Object valueOf(String arg0)
>>>>>>>         {
>>>>>>>                 // TODO Auto-generated method stub
>>>>>>>                 return null;
>>>>>>>         }
>>>>>>>
>>>>>>>
>>>>>>>         private String ArraysToString(Object obj)
>>>>>>>         {
>>>>>>>                 if (obj == null)
>>>>>>>                 {
>>>>>>>                         throw new IllegalArgumentException("Could
>>>>>>> not
>>>>>>> convert null to a String value. " + "Valid argument is an array of
>>>>>>> type
>>>>>>> I_U8  Only ");
>>>>>>>                 }
>>>>>>>
>>>>>>>                 else if (obj instanceof
>>>>>>> com.hns.hss.nmf.server.log.manager.gensrc.Common.I_U8[])
>>>>>>>                 {
>>>>>>>
>>>>>>>         com.hns.hss.nmf.server.log.manager.gensrc.Common.I_U8[]
>>>>>>> ourData
>>>>>>> =
>>>>>>> (com.hns.hss.nmf.server.log.manager.gensrc.Common.I_U8[]) obj;
>>>>>>>                         int length = ourData.length;
>>>>>>>                         Vector byteVector = new Vector();
>>>>>>>                         //byte[] newByteArray = new byte[length-1];
>>>>>>>                         int count = 0;
>>>>>>>
>>>>>>>                         for (int i = 0; i < length; i++)
>>>>>>>                         {
>>>>>>>
>>>>>>>                                 if (ourData[i].getValue() == (byte)
>>>>>>> '\0')
>>>>>>> //\0 byte value
>>>>>>>                                 {
>>>>>>>                                         log_.debug(" NULL CHAR FOUND
>>>>>>> ");
>>>>>>>                                         break;
>>>>>>>                                 }
>>>>>>>                                 else
>>>>>>>                                 {
>>>>>>>                                        
>>>>>>> byteVector.add(ourData[i].getValue());
>>>>>>>                                         count++;
>>>>>>>                                 }
>>>>>>>                         }
>>>>>>>                         log_.debug(" Byte Vector " + byteVector);
>>>>>>>                         String finalHexString = new String();
>>>>>>>                         StringBuffer finalString = new
>>>>>>> StringBuffer();
>>>>>>>                         //String returnString = new String();
>>>>>>>                         try
>>>>>>>                         {
>>>>>>>                                 finalHexString =
>>>>>>> ByteArrayToTimeStampHandler.getHexString(byteVector);
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>                                
>>>>>>> ByteArrayToTimeStampHandler.hexToString(finalHexString,
>>>>>>> finalString);
>>>>>>>                                 log_.debug("finalString is " +
>>>>>>> finalString.toString());
>>>>>>>
>>>>>>>
>>>>>>>                                 if ( ourData[0].getValue() !=
>>>>>>> (byte)45
>>>>>>> )
>>>>>>> //Not a Negative Sign
>>>>>>>                                  {
>>>>>>>                                  log_.debug(" NOT A NEGATIVE SIGN
>>>>>>> ");
>>>>>>>                                  returnString = " " + finalString;
>>>>>>>
>>>>>>>
>>>>>>>                                  }else // Negative Sign
>>>>>>>                                  {
>>>>>>>                                                  returnString = "-"
>>>>>>> +
>>>>>>> finalString;
>>>>>>>
>>>>>>>                                  }
>>>>>>>
>>>>>>>                         }
>>>>>>>                         catch (Exception e)
>>>>>>>                         {
>>>>>>>                                 e.printStackTrace();
>>>>>>>                         }
>>>>>>>
>>>>>>>                         String checkString = finalString.toString();
>>>>>>>                         return checkString;
>>>>>>>
>>>>>>>                 }
>>>>>>>                 else
>>>>>>>                 {
>>>>>>>
>>>>>>>                         return null;
>>>>>>>                 }
>>>>>>>                 //return null;
>>>>>>>
>>>>>>>         }
>>>>>>>
>>>>>>>
>>>>>>>         public static final void hexToString(String hex,
>>>>>>> StringBuffer
>>>>>>> out)
>>>>>>>         {
>>>>>>>                 if (hex == null) return;
>>>>>>>                 int length = hex.length() & -4;
>>>>>>>                 for (int pos = 0; pos < length; pos += 4)
>>>>>>>                 {
>>>>>>>                         int this_char = 0;
>>>>>>>                         try
>>>>>>>                         {
>>>>>>>                 this_char = Integer.parseInt(hex.substring(pos, pos
>>>>>>> +
>>>>>>> 4),
>>>>>>> 16);
>>>>>>>                         }
>>>>>>>                         catch (NumberFormatException NF_Ex)
>>>>>>>                         {
>>>>>>>                         }
>>>>>>>                         out.append((char) this_char);
>>>>>>>                 }
>>>>>>>         }
>>>>>>>
>>>>>>>         public static String getHexString(Vector vector) throws
>>>>>>> Exception
>>>>>>>         {
>>>>>>>
>>>>>>>                 String result = "00";
>>>>>>>                 short[] b = new short[vector.size()];
>>>>>>>
>>>>>>>                 for (int j = 0; j < vector.size(); j++)
>>>>>>>                 {
>>>>>>>
>>>>>>>                         b[j] = ((Short) vector.get(j)).shortValue();
>>>>>>>                 }
>>>>>>>                 for (int i = 0; i < b.length; i++)
>>>>>>>                 {
>>>>>>>         result += Integer.toString((b[i] & 0xff) + 0x100,
>>>>>>> 16).substring(1);
>>>>>>>                         result += "00";
>>>>>>>                 }
>>>>>>>
>>>>>>>                 return result.substring(0, result.length() - 2);
>>>>>>>         }
>>>>>>> }
>>>>>>> -----Original Message-----
>>>>>>> From: jishnu123 [mailto:rjis...@gmail.com]
>>>>>>> Sent: Friday, October 09, 2009 10:49 AM
>>>>>>> To: user-java@ibatis.apache.org
>>>>>>> Subject: Re: IBatis Array feild insertion problem in postgres
>>>>>>> database()Please help me)
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Thank you for your reply...I have already implemented  type handler
>>>>>>> and
>>>>>>> all
>>>>>>> classes as follows...But i got the the same error as
>>>>>>> follows....Please
>>>>>>> help
>>>>>>> me.....I didn't try array feild selection....I have been trying to
>>>>>>> insertion
>>>>>>> of array feild...
>>>>>>>
>>>>>>> I have to mention again that error as follows....Any body get an
>>>>>>> idea
>>>>>>> please
>>>>>>> reply immediately..
>>>>>>>
>>>>>>> INFO [org.springframework.beans.factory.xml.XmlBeanDefinitionReader]
>>>>>>> -
>>>>>>> <Loading XML bean definitions from class path resource
>>>>>>> [org/springframework/jdbc/support/sql-error-codes.xml]>
>>>>>>> INFO [org.springframework.jdbc.support.SQLErrorCodesFactory] -
>>>>>>> <SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, Informix, MS-SQL,
>>>>>>> MySQL,
>>>>>>> Oracle, PostgreSQL, Sybase]>
>>>>>>>
>>>>>>>
>>>>>>> Ingmar Lötzsch wrote:
>>>>>>>> You can use a type handler and implement java.sql.Array. Example:
>>>>>>>>
>>>>>>>> 1st: abstract superclass as adapter
>>>>>>>>
>>>>>>>> public abstract class SqlArrayAdapter
>>>>>>>> implements Array
>>>>>>>> {
>>>>>>>>       public Object getArray() throws SQLException
>>>>>>>>       {
>>>>>>>>               // Auto-generated method stub
>>>>>>>>               return null;
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       public Object getArray(long index, int count) throws
>>>>>>>> SQLException
>>>>>>>>       {
>>>>>>>>               // Auto-generated method stub
>>>>>>>>               return null;
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       public Object getArray(long index, int count, Map<String,
>>>>>>>> Class<
>>>>>>>> ?
>>>>>>>> map) throws SQLException
>>>>>>>>       {
>>>>>>>>               // Auto-generated method stub
>>>>>>>>               return null;
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       public Object getArray(Map<String, Class< ? >> map) throws
>>>>>>>> SQLException
>>>>>>>>       {
>>>>>>>>               // Auto-generated method stub
>>>>>>>>               return null;
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       public int getBaseType() throws SQLException
>>>>>>>>       {
>>>>>>>>               // Auto-generated method stub
>>>>>>>>               return 0;
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       public String getBaseTypeName() throws SQLException
>>>>>>>>       {
>>>>>>>>               // Auto-generated method stub
>>>>>>>>               return null;
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       public ResultSet getResultSet() throws SQLException
>>>>>>>>       {
>>>>>>>>               // Auto-generated method stub
>>>>>>>>               return null;
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       public ResultSet getResultSet(long index, int count) throws
>>>>>>>> SQLException
>>>>>>>>       {
>>>>>>>>               // Auto-generated method stub
>>>>>>>>               return null;
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       public ResultSet getResultSet(long index, int count,
>>>>>>>> Map<String,
>>>>>>>> Class<
>>>>>>>> ? >> map) throws SQLException
>>>>>>>>       {
>>>>>>>>               // Auto-generated method stub
>>>>>>>>               return null;
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       public ResultSet getResultSet(Map<String, Class< ? >> map)
>>>>>>>> throws
>>>>>>>> SQLException
>>>>>>>>       {
>>>>>>>>               // Auto-generated method stub
>>>>>>>>               return null;
>>>>>>>>       }
>>>>>>>> }
>>>>>>>>
>>>>>>>> 2nd: implementation of java.sql.Array for use with int[] or
>>>>>>>> Collection<Integer>
>>>>>>>>
>>>>>>>> public class IntArray
>>>>>>>> extends SqlArrayAdapter
>>>>>>>> {
>>>>>>>>       private static final Integer[] emptyArray = new Integer[0];
>>>>>>>>
>>>>>>>>       private int[] array;
>>>>>>>>
>>>>>>>>       public IntArray(int[] array)
>>>>>>>>       {
>>>>>>>>               if (array == null)
>>>>>>>>               {
>>>>>>>>                       throw new IllegalArgumentException("parameter
>>>>>>>> array
>>>>>>>> should not be
>>>>>>>> null");
>>>>>>>>               }
>>>>>>>>               this.array = array;
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       public IntArray(Collection<Integer> set)
>>>>>>>>       {
>>>>>>>>               if (set == null)
>>>>>>>>               {
>>>>>>>>                       throw new IllegalArgumentException("parameter
>>>>>>>> set
>>>>>>>> should not be null");
>>>>>>>>               }
>>>>>>>>               Integer[] keys = set.toArray(emptyArray);
>>>>>>>>
>>>>>>>>               this.array = new int[keys.length];
>>>>>>>>               for (int i = 0; i < keys.length; ++i)
>>>>>>>>               {
>>>>>>>>                       Integer key = keys[i];
>>>>>>>>                       this.array[i] = key.intValue();
>>>>>>>>               }
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       @Override
>>>>>>>>       public int getBaseType()
>>>>>>>> //    throws SQLException
>>>>>>>>       {
>>>>>>>>               return Types.INTEGER;
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       /**
>>>>>>>>        * This method is called by driver ver. 8 but not by ver. 7.
>>>>>>>>        */
>>>>>>>>       @Override
>>>>>>>>       public String getBaseTypeName()
>>>>>>>> //    throws SQLException
>>>>>>>>       {
>>>>>>>>               return "int4";
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       /**
>>>>>>>>        * This method is called by both drivers ver. 8 and 7.
>>>>>>>>        */
>>>>>>>>       @Override
>>>>>>>>       public String toString()
>>>>>>>>       {
>>>>>>>>               String result = "{";
>>>>>>>>               for (int i = 0; i < this.array.length; ++i)
>>>>>>>>               {
>>>>>>>>                       if (i > 0)
>>>>>>>>                       {
>>>>>>>>                               result += ",";
>>>>>>>>                       }
>>>>>>>>                       result += this.array[i];
>>>>>>>>               }
>>>>>>>>               result += "}";
>>>>>>>>               return result;
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       public void free()
>>>>>>>> //    throws SQLException
>>>>>>>>       {
>>>>>>>>               this.array = null;
>>>>>>>>       }
>>>>>>>> }
>>>>>>>>
>>>>>>>> 3rd: implementation of TypeHandlerCallback
>>>>>>>>
>>>>>>>> public class IntArrayTypeHandler
>>>>>>>> implements TypeHandlerCallback
>>>>>>>> {
>>>>>>>>       public void setParameter(ParameterSetter setter, Object
>>>>>>>> parameter)
>>>>>>>>       throws SQLException
>>>>>>>>       {
>>>>>>>>               Collection<Integer> keys = (Collection<Integer>)
>>>>>>>> parameter;
>>>>>>>>               IntArray intArray = new IntArray(keys);
>>>>>>>>               setter.setArray(intArray);
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       public Object getResult(ResultGetter getter)
>>>>>>>>       throws SQLException
>>>>>>>>       {
>>>>>>>>               Array array = getter.getArray();
>>>>>>>>               return array;
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       public Object valueOf(String string)
>>>>>>>>       {
>>>>>>>>               return string;
>>>>>>>>       }
>>>>>>>> }
>>>>>>>>
>>>>>>>> 4th: add the type handler to your configuration
>>>>>>>>       <typeAlias alias="IntArrayTypeHandler"
>>>>>>>> type="com.asci.common.ibatis.IntArrayTypeHandler" />
>>>>>>>>
>>>>>>>> 5th: SQL map
>>>>>>>>
>>>>>>>> <select id="selectFahrgastById" parameterClass="map"
>>>>>>>> resultMap="...">
>>>>>>>>       SELECT
>>>>>>>>               k.id,
>>>>>>>>               ...
>>>>>>>>       FROM kunden AS k
>>>>>>>>       WHERE k.id = ANY (#fahrgastIds,handler=IntArrayTypehandler#)
>>>>>>>> </select>
>>>>>>>>
>>>>>>>> 6th: DAO
>>>>>>>>
>>>>>>>> public List<Fahrgast> selectFahrgastById(Set<Integer> fahrgastIds)
>>>>>>>> {
>>>>>>>>       HashMap<String, Object> params = new HashMap<String,
>>>>>>>> Object>();
>>>>>>>>       params.put("fahrgastIds", fahrgastIds);
>>>>>>>>       List<Fahrgast> list = getSqlMapClientTemplate().queryForList(
>>>>>>>>               "datenerfassung.selectFahrgastById", params);
>>>>>>>>       return list;
>>>>>>>> }
>>>>>>>>
>>>>>>>> jishnu123 schrieb:
>>>>>>>>>    Hai,
>>>>>>>>>
>>>>>>>>>          I have to tried insertion of array feild in postgres
>>>>>>>>> database
>>>>>>>>> using
>>>>>>>>> spring mvc with iBatis.I got two lines error ...like
>>>>>>>>>
>>>>>>>>>                                 Error as follows...
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> [org.springframework.beans.factory.xml.XmlBeanDefinitionReader] -
>>>>>>>>> <Loading
>>>>>>>>> XML bean definitions from class path resource
>>>>>>>>> [org/springframework/jdbc/support/sql-error-codes.xml]>
>>>>>>>>>  [org.springframework.jdbc.support.SQLErrorCodesFactory] -
>>>>>>>>> <SQLErrorCodes
>>>>>>>>> loaded: [DB2, Derby, H2, HSQL, Informix, MS-SQL, MySQL, Oracle,
>>>>>>>>> PostgreSQL,
>>>>>>>>> Sybase]>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>    Its urgent ....Please help me........Any one has an idea 
>>>>>>>>> please
>>>>>>>>> reply
>>>>>>>>> immediately otherwise sent to my emaild id rjis...@gmail.com
>>>>>>>>>
>>>>>>>>>
>>>>>>>> ---------------------------------------------------------------------
>>>>>>>> To unsubscribe, e-mail: user-java-unsubscr...@ibatis.apache.org
>>>>>>>> For additional commands, e-mail: user-java-h...@ibatis.apache.org
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>> --
>>>>>>> View this message in context:
>>>>>>> http://www.nabble.com/IBatis-Array-feild-insertion-problem-in-postgres-database%28%29Please-help-me%29-tp25799490p25815639.html
>>>>>>> Sent from the iBATIS - User - Java mailing list archive at
>>>>>>> Nabble.com.
>>>>>>>
>>>>>>>
>>>>>>> ---------------------------------------------------------------------
>>>>>>> To unsubscribe, e-mail: user-java-unsubscr...@ibatis.apache.org
>>>>>>> For additional commands, e-mail: user-java-h...@ibatis.apache.org
>>>>>>> The information contained in this e-mail is private & confidential
>>>>>>> and
>>>>>>> may
>>>>>>> also be legally privileged. If you are not the intended recipient,
>>>>>>> please
>>>>>>> notify us, preferably by e-mail, and do not read, copy or disclose
>>>>>>> the
>>>>>>> contents of this message to anyone.
>>>>>>>
>>>>>>> ---------------------------------------------------------------------
>>>>>>> To unsubscribe, e-mail: user-java-unsubscr...@ibatis.apache.org
>>>>>>> For additional commands, e-mail: user-java-h...@ibatis.apache.org
>>>>>>>
>>>>>>>
>>>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: user-java-unsubscr...@ibatis.apache.org
>>>>> For additional commands, e-mail: user-java-h...@ibatis.apache.org
>>>>>
>>>>>
>>>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: user-java-unsubscr...@ibatis.apache.org
>>> For additional commands, e-mail: user-java-h...@ibatis.apache.org
>>>
>>>
>>>
>> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-java-unsubscr...@ibatis.apache.org
> For additional commands, e-mail: user-java-h...@ibatis.apache.org
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/IBatis-Array-feild-insertion-problem-in-postgres-database%28%29Please-help-me%29-tp25799490p26057542.html
Sent from the iBATIS - User - Java mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: user-java-unsubscr...@ibatis.apache.org
For additional commands, e-mail: user-java-h...@ibatis.apache.org

Reply via email to