I have already implemented all java beans with SqlArrayAdapter,IntArray and IntArrayTypeHandler..But iam still facing the same problem....Actually i had implemented my project using spring mvc with iBatis..I think spring MVC problem...
I again mention that particular error as follows....Any body have any idea to solve that problem... Please sent reply immediately... INFO [org.springframework.beans.factory.xml.XmlBeanDefinitionReader] - <Loading XML bean definitions from class path resource [org/springframework/jdbc/support/sql-error-codes.xml]> INFO [org.springframework.jdbc.support.SQLErrorCodesFactory] - <SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, Informix, MS-SQL, MySQL, Oracle, PostgreSQL, Sybase]> Rahul Saluja wrote: > > Hi Jishnu, > > I cannot understand anything by given exception but yes suggested > implementation by Ingmar is rite approach and moreover which version of > Postgres you are using as in 7.3.1 it is nlot possible to store the array > data so better way of doing it is to convert the data in String and push > it as varchar and while retrieving back convert back it into your > required datatype array here is the example you can use for insertion. > > > > > > import java.sql.SQLException; > import java.sql.Types; > import java.util.Vector; > > import com.hns.hss.nmf.common.util.unilogger.LogFactory; > import com.hns.hss.nmf.common.util.unilogger.LoggerIf; > import com.ibatis.sqlmap.client.extensions.ParameterSetter; > import com.ibatis.sqlmap.client.extensions.ResultGetter; > import com.ibatis.sqlmap.client.extensions.TypeHandlerCallback; > > public class ByteArrayToTimeStampHandler implements TypeHandlerCallback > { > private static LoggerIf log_ = > LogFactory.getLoggerIf(ArraysToStringTypeHandler.class.getName()); > > > > public Object getResult(ResultGetter arg0) throws SQLException > { > // TODO Auto-generated method stub > return null; > } > > > public void setParameter(ParameterSetter setter, Object parameter) > throws SQLException > { > if (parameter == null) > { > setter.setNull(Types.CHAR); > } > else > { > setter.setString(ArraysToString(parameter)); > } > // TODO Auto-generated method stub > > } > > > public Object valueOf(String arg0) > { > // TODO Auto-generated method stub > return null; > } > > > private String ArraysToString(Object obj) > { > if (obj == null) > { > throw new IllegalArgumentException("Could not > convert null to a String value. " + "Valid argument is an array of type > I_U8 Only "); > } > > else if (obj instanceof > com.hns.hss.nmf.server.log.manager.gensrc.Common.I_U8[]) > { > > com.hns.hss.nmf.server.log.manager.gensrc.Common.I_U8[] ourData = > (com.hns.hss.nmf.server.log.manager.gensrc.Common.I_U8[]) obj; > int length = ourData.length; > Vector byteVector = new Vector(); > //byte[] newByteArray = new byte[length-1]; > int count = 0; > > for (int i = 0; i < length; i++) > { > > if (ourData[i].getValue() == (byte) '\0') > //\0 byte value > { > log_.debug(" NULL CHAR FOUND "); > break; > } > else > { > > byteVector.add(ourData[i].getValue()); > count++; > } > } > log_.debug(" Byte Vector " + byteVector); > String finalHexString = new String(); > StringBuffer finalString = new StringBuffer(); > //String returnString = new String(); > try > { > finalHexString = > ByteArrayToTimeStampHandler.getHexString(byteVector); > > > > > ByteArrayToTimeStampHandler.hexToString(finalHexString, finalString); > log_.debug("finalString is " + > finalString.toString()); > > > if ( ourData[0].getValue() != (byte)45 ) > //Not a Negative Sign > { > log_.debug(" NOT A NEGATIVE SIGN "); > returnString = " " + finalString; > > > }else // Negative Sign > { > returnString = "-" + > finalString; > > } > > } > catch (Exception e) > { > e.printStackTrace(); > } > > String checkString = finalString.toString(); > return checkString; > > } > else > { > > return null; > } > //return null; > > } > > > public static final void hexToString(String hex, StringBuffer out) > { > if (hex == null) return; > int length = hex.length() & -4; > for (int pos = 0; pos < length; pos += 4) > { > int this_char = 0; > try > { > this_char = Integer.parseInt(hex.substring(pos, pos + 4), > 16); > } > catch (NumberFormatException NF_Ex) > { > } > out.append((char) this_char); > } > } > > public static String getHexString(Vector vector) throws Exception > { > > String result = "00"; > short[] b = new short[vector.size()]; > > for (int j = 0; j < vector.size(); j++) > { > > b[j] = ((Short) vector.get(j)).shortValue(); > } > for (int i = 0; i < b.length; i++) > { > result += Integer.toString((b[i] & 0xff) + 0x100, > 16).substring(1); > result += "00"; > } > > return result.substring(0, result.length() - 2); > } > } > -----Original Message----- > From: jishnu123 [mailto:rjis...@gmail.com] > Sent: Friday, October 09, 2009 10:49 AM > To: user-java@ibatis.apache.org > Subject: Re: IBatis Array feild insertion problem in postgres > database()Please help me) > > > > Thank you for your reply...I have already implemented type handler and > all > classes as follows...But i got the the same error as follows....Please > help > me.....I didn't try array feild selection....I have been trying to > insertion > of array feild... > > I have to mention again that error as follows....Any body get an idea > please > reply immediately.. > > INFO [org.springframework.beans.factory.xml.XmlBeanDefinitionReader] - > <Loading XML bean definitions from class path resource > [org/springframework/jdbc/support/sql-error-codes.xml]> > INFO [org.springframework.jdbc.support.SQLErrorCodesFactory] - > <SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, Informix, MS-SQL, MySQL, > Oracle, PostgreSQL, Sybase]> > > > Ingmar Lötzsch wrote: >> >> You can use a type handler and implement java.sql.Array. Example: >> >> 1st: abstract superclass as adapter >> >> public abstract class SqlArrayAdapter >> implements Array >> { >> public Object getArray() throws SQLException >> { >> // Auto-generated method stub >> return null; >> } >> >> public Object getArray(long index, int count) throws SQLException >> { >> // Auto-generated method stub >> return null; >> } >> >> public Object getArray(long index, int count, Map<String, Class< ? >> >> >> map) throws SQLException >> { >> // Auto-generated method stub >> return null; >> } >> >> public Object getArray(Map<String, Class< ? >> map) throws >> SQLException >> { >> // Auto-generated method stub >> return null; >> } >> >> public int getBaseType() throws SQLException >> { >> // Auto-generated method stub >> return 0; >> } >> >> public String getBaseTypeName() throws SQLException >> { >> // Auto-generated method stub >> return null; >> } >> >> public ResultSet getResultSet() throws SQLException >> { >> // Auto-generated method stub >> return null; >> } >> >> public ResultSet getResultSet(long index, int count) throws >> SQLException >> { >> // Auto-generated method stub >> return null; >> } >> >> public ResultSet getResultSet(long index, int count, Map<String, >> Class< >> ? >> map) throws SQLException >> { >> // Auto-generated method stub >> return null; >> } >> >> public ResultSet getResultSet(Map<String, Class< ? >> map) throws >> SQLException >> { >> // Auto-generated method stub >> return null; >> } >> } >> >> 2nd: implementation of java.sql.Array for use with int[] or >> Collection<Integer> >> >> public class IntArray >> extends SqlArrayAdapter >> { >> private static final Integer[] emptyArray = new Integer[0]; >> >> private int[] array; >> >> public IntArray(int[] array) >> { >> if (array == null) >> { >> throw new IllegalArgumentException("parameter array >> should not be >> null"); >> } >> this.array = array; >> } >> >> public IntArray(Collection<Integer> set) >> { >> if (set == null) >> { >> throw new IllegalArgumentException("parameter set >> should not be null"); >> } >> Integer[] keys = set.toArray(emptyArray); >> >> this.array = new int[keys.length]; >> for (int i = 0; i < keys.length; ++i) >> { >> Integer key = keys[i]; >> this.array[i] = key.intValue(); >> } >> } >> >> @Override >> public int getBaseType() >> // throws SQLException >> { >> return Types.INTEGER; >> } >> >> /** >> * This method is called by driver ver. 8 but not by ver. 7. >> */ >> @Override >> public String getBaseTypeName() >> // throws SQLException >> { >> return "int4"; >> } >> >> /** >> * This method is called by both drivers ver. 8 and 7. >> */ >> @Override >> public String toString() >> { >> String result = "{"; >> for (int i = 0; i < this.array.length; ++i) >> { >> if (i > 0) >> { >> result += ","; >> } >> result += this.array[i]; >> } >> result += "}"; >> return result; >> } >> >> public void free() >> // throws SQLException >> { >> this.array = null; >> } >> } >> >> 3rd: implementation of TypeHandlerCallback >> >> public class IntArrayTypeHandler >> implements TypeHandlerCallback >> { >> public void setParameter(ParameterSetter setter, Object parameter) >> throws SQLException >> { >> Collection<Integer> keys = (Collection<Integer>) parameter; >> IntArray intArray = new IntArray(keys); >> setter.setArray(intArray); >> } >> >> public Object getResult(ResultGetter getter) >> throws SQLException >> { >> Array array = getter.getArray(); >> return array; >> } >> >> public Object valueOf(String string) >> { >> return string; >> } >> } >> >> 4th: add the type handler to your configuration >> <typeAlias alias="IntArrayTypeHandler" >> type="com.asci.common.ibatis.IntArrayTypeHandler" /> >> >> 5th: SQL map >> >> <select id="selectFahrgastById" parameterClass="map" resultMap="..."> >> SELECT >> k.id, >> ... >> FROM kunden AS k >> WHERE k.id = ANY (#fahrgastIds,handler=IntArrayTypehandler#) >> </select> >> >> 6th: DAO >> >> public List<Fahrgast> selectFahrgastById(Set<Integer> fahrgastIds) >> { >> HashMap<String, Object> params = new HashMap<String, Object>(); >> params.put("fahrgastIds", fahrgastIds); >> List<Fahrgast> list = getSqlMapClientTemplate().queryForList( >> "datenerfassung.selectFahrgastById", params); >> return list; >> } >> >> jishnu123 schrieb: >>> >>> Hai, >>> >>> I have to tried insertion of array feild in postgres database >>> using >>> spring mvc with iBatis.I got two lines error ...like >>> >>> Error as follows... >>> >>> >>> [org.springframework.beans.factory.xml.XmlBeanDefinitionReader] - >>> <Loading >>> XML bean definitions from class path resource >>> [org/springframework/jdbc/support/sql-error-codes.xml]> >>> [org.springframework.jdbc.support.SQLErrorCodesFactory] - >>> <SQLErrorCodes >>> loaded: [DB2, Derby, H2, HSQL, Informix, MS-SQL, MySQL, Oracle, >>> PostgreSQL, >>> Sybase]> >>> >>> >>> Its urgent ....Please help me........Any one has an idea please >>> reply >>> immediately otherwise sent to my emaild id rjis...@gmail.com >>> >>> >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: user-java-unsubscr...@ibatis.apache.org >> For additional commands, e-mail: user-java-h...@ibatis.apache.org >> >> >> > > -- > View this message in context: > http://www.nabble.com/IBatis-Array-feild-insertion-problem-in-postgres-database%28%29Please-help-me%29-tp25799490p25815639.html > Sent from the iBATIS - User - Java mailing list archive at Nabble.com. > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: user-java-unsubscr...@ibatis.apache.org > For additional commands, e-mail: user-java-h...@ibatis.apache.org > The information contained in this e-mail is private & confidential and may > also be legally privileged. If you are not the intended recipient, please > notify us, preferably by e-mail, and do not read, copy or disclose the > contents of this message to anyone. > > --------------------------------------------------------------------- > To unsubscribe, e-mail: user-java-unsubscr...@ibatis.apache.org > For additional commands, e-mail: user-java-h...@ibatis.apache.org > > > -- 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-unsubscr...@ibatis.apache.org For additional commands, e-mail: user-java-h...@ibatis.apache.org