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:[email protected]]
> Sent: Friday, October 09, 2009 10:49 AM
> To: [email protected]
> 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 [email protected]
>>>
>>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [email protected]
>> For additional commands, e-mail: [email protected]
>>
>>
>>
>
> --
> 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: [email protected]
> For additional commands, e-mail: [email protected]
> 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: [email protected]
> For additional commands, e-mail: [email protected]
>
>
>
--
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: [email protected]
For additional commands, e-mail: [email protected]