You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-java@ibatis.apache.org by jishnu123 <rj...@gmail.com> on 2009/10/08 09:21:29 UTC

IBatis Array feild insertion problem in postgres database()Please help me)


   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 rjishnu@gmail.com 
      

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


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


Re: IBatis Array feild insertion problem in postgres database()Please help me)

Posted by jishnu123 <rj...@gmail.com>.
I have  uploaded  the detailed list of my
http://www.nabble.com/file/p26058747/SourceCodelist SourceCodelist  source
code ....

jishnu123 wrote:
> 
> 
> 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:rjishnu@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 rjishnu@gmail.com
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>> To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
>>>>>>>>> For additional commands, e-mail: user-java-help@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-unsubscribe@ibatis.apache.org
>>>>>>>> For additional commands, e-mail: user-java-help@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-unsubscribe@ibatis.apache.org
>>>>>>>> For additional commands, e-mail: user-java-help@ibatis.apache.org
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
>>>>>> For additional commands, e-mail: user-java-help@ibatis.apache.org
>>>>>>
>>>>>>
>>>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
>>>> For additional commands, e-mail: user-java-help@ibatis.apache.org
>>>>
>>>>
>>>>
>>> 
>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
>> For additional commands, e-mail: user-java-help@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-tp25799490p26058747.html
Sent from the iBATIS - User - Java mailing list archive at Nabble.com.


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


Re: IBatis Array feild insertion problem in postgres database()Please help me)

Posted by Ingmar Lötzsch <il...@asci-systemhaus.de>.
You can use a result map and have to modify the IntArrayTypeMapper class
to return int[] instead of Array (actual type for example
org.postgresql.jdbc3.Jdbc3Array).

<resultMap id="result" class="..." >
	...
	<result column="kms_usr_otherusergroups"
property="kms_usr_otherusergroups" typeHandler="IntArrayTypeHandler" />
</resultMap>
	
<select id="select" parameterClass="int" resultMap="result" >
	SELECT
		...
	 	kms_users.kms_usr_otherusergroups,
		...
	FROM kms_users
	WHERE kms_users.kms_usr_userid = #value#
</select>

public class IntArrayTypeMapper
{
	...

	public Object getResult(ResultGetter getter)
	throws SQLException
	{
		Array array = getter.getArray();
		Object intArray = array.getArray();
		return intArray;
	}

	...
}

array.getArray() returns an int[] in case of a column of type int[] in
database.

>  SELECT
> 	kms_users.kms_usr_userid,
> 	kms_users.kms_usr_username,
> 	kms_users.kms_usr_userstatus,
> 	kms_users.kms_usr_otherusergroups,-->This is query field and how to put in
> handler=IntArrayTypeMapper for select query
> 	kms_users.kms_usr_emailid
> 
> WHERE
> 	kms_users.kms_usr_userid =#kmsusrid#
> 


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


Re: IBatis Array feild insertion problem in postgres database()Please help me)

Posted by jishnu123 <rj...@gmail.com>.
Hai,

Thank you  again for gave valuable information.I have one more  doubt.

How to implement mapping and sql queries  for selecting array field  using
iBatis.

Its urgent....please reply immediately...
Query details as follows..

 SELECT
	kms_users.kms_usr_userid,
	kms_users.kms_usr_username,
	kms_users.kms_usr_userstatus,
	kms_users.kms_usr_otherusergroups,-->This is query field and how to put in
handler=IntArrayTypeMapper for select query
	kms_users.kms_usr_emailid

WHERE
	kms_users.kms_usr_userid =#kmsusrid#







jishnu123 wrote:
> 
> 
> Dear  Ingmar Lötzsch,
> 
>        Thank you very much.I have solved that problem.The problem was
> IntArrayTypeMapper bean problem.The exact code you have mention  previous
> mail....I had to change  IntArrayTypeMapper through  Collection<Integer>
> instead of  int[] keys = (int[]) parameter;..Then its working
> fine.............
> 
> Thank you very much....
>  thanks.thanks...thanks.thanks...thanks.thanks...thanks.thanks...
> 
> 
> Ingmar Lötzsch wrote:
>> 
>> Sorry, I have maked a mistake:
>> 
>>> Your version of IntArrayTypeMapper expects a Collection<Integer> but
>>> actual parameter is of type org.ada.kms.domain.IntArray because you let
>>> iBATIS call getKmsgrpaccessiblegroup():
>>> 
>>> #kmsgrpaccessiblegroups,handler=KmsArrayTypeMapper#
>> 
>> must be
>> 
>> #kmsgrpaccessiblegroup,handler=KmsArrayTypeMapper#
>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
>> For additional commands, e-mail: user-java-help@ibatis.apache.org
>> 
>> 
>> 
> 
> 

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


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


Re: IBatis Array feild insertion problem in postgres database()Please help me)

Posted by jishnu123 <rj...@gmail.com>.

Dear  Ingmar Lötzsch,

       Thank you very much.I have solved that problem.The problem was
IntArrayTypeMapper bean problem.The exact code you have mention  previous
mail....I had to change  IntArrayTypeMapper through  Collection<Integer>
instead of  int[] keys = (int[]) parameter;..Then its working
fine.............

Thank you very much....
 thanks.thanks...thanks.thanks...thanks.thanks...thanks.thanks...


Ingmar Lötzsch wrote:
> 
> Sorry, I have maked a mistake:
> 
>> Your version of IntArrayTypeMapper expects a Collection<Integer> but
>> actual parameter is of type org.ada.kms.domain.IntArray because you let
>> iBATIS call getKmsgrpaccessiblegroup():
>> 
>> #kmsgrpaccessiblegroups,handler=KmsArrayTypeMapper#
> 
> must be
> 
> #kmsgrpaccessiblegroup,handler=KmsArrayTypeMapper#
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
> For additional commands, e-mail: user-java-help@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-tp25799490p26072336.html
Sent from the iBATIS - User - Java mailing list archive at Nabble.com.


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


Re: IBatis Array feild insertion problem in postgres database()Please help me)

Posted by Ingmar Lötzsch <il...@asci-systemhaus.de>.
Sorry, I have maked a mistake:

> Your version of IntArrayTypeMapper expects a Collection<Integer> but
> actual parameter is of type org.ada.kms.domain.IntArray because you let
> iBATIS call getKmsgrpaccessiblegroup():
> 
> #kmsgrpaccessiblegroups,handler=KmsArrayTypeMapper#

must be

#kmsgrpaccessiblegroup,handler=KmsArrayTypeMapper#


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


Re: IBatis Array feild insertion problem in postgres database()Please help me)

Posted by Ingmar Lötzsch <il...@asci-systemhaus.de>.
The problem is

Cause: java.lang.ClassCastException: org.ada.kms.domain.IntArray cannot
> be cast to java.util.Collection

Your version of IntArrayTypeMapper expects a Collection<Integer> but
actual parameter is of type org.ada.kms.domain.IntArray because you let
iBATIS call getKmsgrpaccessiblegroup():

#kmsgrpaccessiblegroups,handler=KmsArrayTypeMapper#

Correct the following:

1. Don't use IntArray as member of your domain classes.

private int[] kmsgrpaccessiblegroups;

public int[] getKmsgrpaccessiblegroups()
{
	return kmsgrpaccessiblegroups;
}

public void setKmsgrpaccessiblegroups(int[] kmsgrpaccessiblegroups)
{
	this.kmsgrpaccessiblegroups = kmsgrpaccessiblegroups;
}

This is enough.

2. In your TypeHandler you have to change one line to use int[] instead
of Collection<Integer>:

public class IntArrayTypeMapper implements TypeHandlerCallback
{
	public void setParameter(ParameterSetter setter, Object parameter)
	throws SQLException
	{
		int[] keys = (int[]) 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;
	}
}

Collection<Integer> was for my requirements.

3. Adapt the sql map (kmsgrpaccessiblegroups instead of
kmsgrpaccessiblegroup).

<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_accessiblegroups
	)
	VALUES
	(
		#kmsgrpgroupid#,
		#kmsgrpgroupname#,
		#kmsgroupactive#,
		#kmsgrpdescription#,
		#kmsgrpcreatedon#,
		#kmsgrpcreatedby#,
		#kmsgrpaccessiblegroups,handler=KmsArrayTypeMapper#
	)
</insert>

I suggest to register the IntArrayTypeMapper class under its own name
and not "KmsArrayTypeMapper".

Before you ask again, try to answer my questions and make the
recommended tests.

jishnu123 schrieb:
> 
> 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:rjishnu@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 rjishnu@gmail.com
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>> To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
>>>>>>>>> For additional commands, e-mail: user-java-help@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-unsubscribe@ibatis.apache.org
>>>>>>>> For additional commands, e-mail: user-java-help@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-unsubscribe@ibatis.apache.org
>>>>>>>> For additional commands, e-mail: user-java-help@ibatis.apache.org
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
>>>>>> For additional commands, e-mail: user-java-help@ibatis.apache.org
>>>>>>
>>>>>>
>>>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
>>>> For additional commands, e-mail: user-java-help@ibatis.apache.org
>>>>
>>>>
>>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
>> For additional commands, e-mail: user-java-help@ibatis.apache.org
>>
>>
>>
> 


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


Re: IBatis Array feild insertion problem in postgres database()Please help me)

Posted by jishnu123 <rj...@gmail.com>.

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:rjishnu@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 rjishnu@gmail.com
>>>>>>>>>
>>>>>>>>>
>>>>>>>> ---------------------------------------------------------------------
>>>>>>>> To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
>>>>>>>> For additional commands, e-mail: user-java-help@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-unsubscribe@ibatis.apache.org
>>>>>>> For additional commands, e-mail: user-java-help@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-unsubscribe@ibatis.apache.org
>>>>>>> For additional commands, e-mail: user-java-help@ibatis.apache.org
>>>>>>>
>>>>>>>
>>>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
>>>>> For additional commands, e-mail: user-java-help@ibatis.apache.org
>>>>>
>>>>>
>>>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
>>> For additional commands, e-mail: user-java-help@ibatis.apache.org
>>>
>>>
>>>
>> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
> For additional commands, e-mail: user-java-help@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-unsubscribe@ibatis.apache.org
For additional commands, e-mail: user-java-help@ibatis.apache.org


Re: IBatis Array feild insertion problem in postgres database()Please help me)

Posted by Ingmar Lötzsch <il...@asci-systemhaus.de>.
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:rjishnu@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 rjishnu@gmail.com
>>>>>>>>
>>>>>>>>
>>>>>>> ---------------------------------------------------------------------
>>>>>>> To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
>>>>>>> For additional commands, e-mail: user-java-help@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-unsubscribe@ibatis.apache.org
>>>>>> For additional commands, e-mail: user-java-help@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-unsubscribe@ibatis.apache.org
>>>>>> For additional commands, e-mail: user-java-help@ibatis.apache.org
>>>>>>
>>>>>>
>>>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
>>>> For additional commands, e-mail: user-java-help@ibatis.apache.org
>>>>
>>>>
>>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
>> For additional commands, e-mail: user-java-help@ibatis.apache.org
>>
>>
>>
> 


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


Re: IBatis Array feild insertion problem in postgres database()Please help me)

Posted by jishnu123 <rj...@gmail.com>.

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:rjishnu@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 rjishnu@gmail.com
>>>>>>>
>>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
>>>>>> For additional commands, e-mail: user-java-help@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-unsubscribe@ibatis.apache.org
>>>>> For additional commands, e-mail: user-java-help@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-unsubscribe@ibatis.apache.org
>>>>> For additional commands, e-mail: user-java-help@ibatis.apache.org
>>>>>
>>>>>
>>>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
>>> For additional commands, e-mail: user-java-help@ibatis.apache.org
>>>
>>>
>>>
>> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
> For additional commands, e-mail: user-java-help@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-tp25799490p25886006.html
Sent from the iBATIS - User - Java mailing list archive at Nabble.com.


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


Re: IBatis Array feild insertion problem in postgres database()Please help me)

Posted by Ingmar Lötzsch <il...@asci-systemhaus.de>.
>> 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:rjishnu@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 rjishnu@gmail.com
>>>>>>
>>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
>>>>> For additional commands, e-mail: user-java-help@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-unsubscribe@ibatis.apache.org
>>>> For additional commands, e-mail: user-java-help@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-unsubscribe@ibatis.apache.org
>>>> For additional commands, e-mail: user-java-help@ibatis.apache.org
>>>>
>>>>
>>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
>> For additional commands, e-mail: user-java-help@ibatis.apache.org
>>
>>
>>
> 


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


Re: IBatis Array feild insertion problem in postgres database()Please help me)

Posted by jishnu123 <rj...@gmail.com>.
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:rjishnu@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 rjishnu@gmail.com
>>>>>
>>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
>>>> For additional commands, e-mail: user-java-help@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-unsubscribe@ibatis.apache.org
>>> For additional commands, e-mail: user-java-help@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-unsubscribe@ibatis.apache.org
>>> For additional commands, e-mail: user-java-help@ibatis.apache.org
>>>
>>>
>>>
>> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
> For additional commands, e-mail: user-java-help@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-tp25799490p25853890.html
Sent from the iBATIS - User - Java mailing list archive at Nabble.com.


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


Re: IBatis Array feild insertion problem in postgres database()Please help me)

Posted by Ingmar Lötzsch <il...@asci-systemhaus.de>.
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:rjishnu@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 rjishnu@gmail.com
>>>>
>>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
>>> For additional commands, e-mail: user-java-help@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-unsubscribe@ibatis.apache.org
>> For additional commands, e-mail: user-java-help@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-unsubscribe@ibatis.apache.org
>> For additional commands, e-mail: user-java-help@ibatis.apache.org
>>
>>
>>
> 


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


RE: IBatis Array feild insertion problem in postgres database()Please help me)

Posted by jishnu123 <rj...@gmail.com>.
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:rjishnu@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 rjishnu@gmail.com
>>>
>>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
>> For additional commands, e-mail: user-java-help@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-unsubscribe@ibatis.apache.org
> For additional commands, e-mail: user-java-help@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-unsubscribe@ibatis.apache.org
> For additional commands, e-mail: user-java-help@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-tp25799490p25850973.html
Sent from the iBATIS - User - Java mailing list archive at Nabble.com.


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


RE: IBatis Array feild insertion problem in postgres database()Please help me)

Posted by Rahul Saluja <ra...@vnl.in>.
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:rjishnu@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 rjishnu@gmail.com
>>
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
> For additional commands, e-mail: user-java-help@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-unsubscribe@ibatis.apache.org
For additional commands, e-mail: user-java-help@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-unsubscribe@ibatis.apache.org
For additional commands, e-mail: user-java-help@ibatis.apache.org


Re: IBatis Array feild insertion problem in postgres database()Please help me)

Posted by jishnu123 <rj...@gmail.com>.

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 rjishnu@gmail.com 
>>       
>> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
> For additional commands, e-mail: user-java-help@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-unsubscribe@ibatis.apache.org
For additional commands, e-mail: user-java-help@ibatis.apache.org


Re: IBatis Array feild insertion problem in postgres database()Please help me)

Posted by Ingmar Lötzsch <il...@asci-systemhaus.de>.
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 rjishnu@gmail.com 
>       
> 


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