openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Kay Wrobel <kay.wro...@gmx.net>
Subject Re: PersistenceException: Invalid character string format for type int
Date Thu, 24 Oct 2013 21:17:00 GMT
Ja, I actually used:
> <property name="openjpa.jdbc.DBDictionary" value="storeCharsAsNumbers=false"/>
and that works as well.

On 10/24/2013 03:54 PM, Rick Curtis wrote:
> Sorry, I wrote that quickly.... yes it was missing a ')'. If that doesn't
> work, please collect trace.
>
> <property name="openjpa.jdbc.DBDictionary" value="derby(
> storeCharsAsNumbers=false)"/>
>
>
> On Thu, Oct 24, 2013 at 3:50 PM, Kay Wrobel <kay.wrobel@gmx.net> wrote:
>
>> Are you sure value is derby(storeCharsAsNumbers=**false??? That looks
>> wrong somehow.
>>
>> The "(" in there.
>>
>>
>> On 10/24/2013 03:42 PM, Rick Curtis wrote:
>>
>>> As I suggested on IRC earlier this week, try setting the following
>>> property
>>> to see if it makes things work...
>>> <property name="openjpa.jdbc.**DBDictionary"
>>> value="derby(**storeCharsAsNumbers=false"/>
>>>
>>> If it doesn't work, enable trace and let us take a peek.
>>> <property name="openjpa.Log" value="DefaultLevel=trace"/>
>>>
>>> Thanks,
>>> Rick
>>>
>>>
>>> On Thu, Oct 24, 2013 at 3:26 PM, Kay Wrobel <kay.wrobel@gmx.net> wrote:
>>>
>>>   I have to make a correction to the last statement in my original post:
>>>> The
>>>> content values of DISCOUNT_CODE field are /*not*/ of numeric value, but
>>>> actual characters, such as 'H' or 'M'. Sorry for causing confusion.
>>>>
>>>>
>>>> On 10/24/2013 03:17 PM, Mark Struberg wrote:
>>>>
>>>>   My finding so far is that the DerbyDictionary doesn't overwrite
>>>>> storeCharsAsNumbers, so it's still defaulted to true.
>>>>> This code is exactly which trashes in the sample
>>>>>
>>>>>
>>>>> Caused by: java.sql.SQLDataException: Invalid character string format
>>>>> for
>>>>> type int.
>>>>>            at org.apache.derby.client.am.****SQLExceptionFactory40.****
>>>>> getSQLException(Unknown
>>>>> Source)
>>>>>            at org.apache.derby.client.am.****
>>>>> SqlException.getSQLException(****Unknown
>>>>> Source)
>>>>>            at org.apache.derby.client.am.****ResultSet.getInt(Unknown
>>>>> Source)
>>>>>            at org.apache.commons.dbcp.****DelegatingResultSet.getInt(**
>>>>> DelegatingResultSet.java:225)
>>>>>            at org.apache.commons.dbcp.****DelegatingResultSet.getInt(**
>>>>> DelegatingResultSet.java:225)
>>>>>            at org.apache.openjpa.lib.jdbc.****
>>>>> DelegatingResultSet.getInt(**
>>>>> DelegatingResultSet.java:137)
>>>>>            at org.apache.openjpa.jdbc.sql.****DBDictionary.getInt(**
>>>>> DBDictionary.java:841)
>>>>>            at org.apache.openjpa.jdbc.sql.****DBDictionary.getChar(**
>>>>> DBDictionary.java:740)
>>>>>            at org.apache.openjpa.jdbc.sql.****ResultSetResult.**
>>>>> getCharInternal(****ResultSetResult.java:300)
>>>>>            at org.apache.openjpa.jdbc.sql.****ResultSetResult.**
>>>>> getObjectInternal(****ResultSetResult.java:377)
>>>>>
>>>>>
>>>>> The stacktrace is with todays 2.3.x branch snapshot.
>>>>>
>>>>> DBDictionary#getChar():
>>>>>        public char getChar(ResultSet rs, int column)
>>>>>            throws SQLException {
>>>>>            if (storeCharsAsNumbers)
>>>>>                return (char) getInt(rs, column); <-- line 740 boom
>>>>> ...
>>>>>
>>>>> The question for me is how Derby usually stores char fields internally.
>>>>> Is our DerbyDictionary just wrong and should it set storeCharsAsNumbers
>>>>> to false?
>>>>>
>>>>> There is of course the option to use @ColumnDefinition in the entity.
>>>>> This should bypass this flag (I hope, didn't test it yet).
>>>>>
>>>>> LieGrue,
>>>>> strub
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> ----- Original Message -----
>>>>>
>>>>>   From: Kay Wrobel <kay.wrobel@gmx.net>
>>>>>> To: dev@openjpa.apache.org
>>>>>> Cc:
>>>>>> Sent: Thursday, 24 October 2013, 22:08
>>>>>> Subject: PersistenceException: Invalid character string format for
type
>>>>>> int
>>>>>>
>>>>>> Dear OpenJPA Dev Team,
>>>>>>
>>>>>> I am getting this exception
>>>>>> <https://raw.github.com/****kwrobel/OpenJPA-****
>>>>>> IntExceptionTest/master/**<https://raw.github.com/**kwrobel/OpenJPA-**IntExceptionTest/master/**>
>>>>>> OpenJPA-IntExceptionTest/****DiscountCode-Exception.txt<htt**
>>>>>> ps://raw.github.com/kwrobel/**OpenJPA-IntExceptionTest/**
>>>>>> master/OpenJPA-**IntExceptionTest/DiscountCode-**Exception.txt<https://raw.github.com/kwrobel/OpenJPA-IntExceptionTest/master/OpenJPA-IntExceptionTest/DiscountCode-Exception.txt>
>>>>>> while reading a simple entity DiscountCode from a Derby database
called
>>>>>> SAMPLE (ships with Glassfish/NetBeans) called DISCOUNT_CODE that
has
>>>>>> only two fields:
>>>>>>
>>>>>> 1. DISCOUNT_CODE  CHAR(1) NOT NULL PRIMARY KEY
>>>>>> 2. RATE DECIMAL(4,2) NULL
>>>>>>
>>>>>> DISCOUNT_CODE maps to type "Character" and RATE maps to
>>>>>> "BigDecimal". I
>>>>>> set up a Github <https://github.com/kwrobel/****
>>>>>> OpenJPA-IntExceptionTest<https://github.com/kwrobel/**OpenJPA-IntExceptionTest>
>>>>>> <https**://github.com/kwrobel/OpenJPA-**IntExceptionTest<https://github.com/kwrobel/OpenJPA-IntExceptionTest>
>>>>>> with a small test project. It's really small and concise. All you
need
>>>>>> to run this is a running Derby Network server with the SAMPLE database
>>>>>> (included on the github), the latest OpenJPA library (I tested so
far:
>>>>>> 2.2.0 shipping with TomEE 1.5.2, 2.2.2 from the main project page,
and
>>>>>> 2.3.0-SNAPSHOT), the derby client driver (derby.jar, derbyclient.jar,
>>>>>> derbynet.jar from the main Apache Derby distribution) and that's
it.
>>>>>>
>>>>>> The curious part is that the field DiscountCode, though a char field,
>>>>>> contains numeric, integer values. Mark Struberg seems to have a hunch
>>>>>> already of what is going on and is able to add some more insight.
>>>>>>
>>>>>> Any input on this is greatly appreciated.
>>>>>>
>>>>>> Regards,
>>>>>>
>>>>>> Kay Wrobel
>>>>>>
>>>>>>
>>>>>>
>


Mime
View raw message