openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Rick Curtis <curti...@gmail.com>
Subject Re: PersistenceException: Invalid character string format for type int
Date Thu, 24 Oct 2013 20:54:25 GMT
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
>>>>>
>>>>>
>>>>>
>>
>


-- 
*Rick Curtis*

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message