> The type in the PK column is NUMERIC with a size of 15 digits. This reflects
> what is in the Oracle database. But since NUMERIC isn't BIGINT, the key is
> being truncated to Integer. Is that expected behavior or have I found a bug?
Sure it is NUMERIC in DB, but you can still map it in Cayenne model as BIGINT.
I am fairly certain it will work correctly.
Having said that, we should probably add some logic to ensure that NUMERIC(N)
is converted to Long if N > (?)
Andrus
On Jul 20, 2012, at 7:18 PM, Joseph Senecal wrote:
> The type in the PK column is NUMERIC with a size of 15 digits. This reflects
> what is in the Oracle database. But since NUMERIC isn't BIGINT, the key is
> being truncated to Integer. Is that expected behavior or have I found a bug?
>
> This is no longer an urgent issue. I was already overriding
> OraclePkGenerator, I simple changed the code to always return a LONG (all of
> our primary keys are NUMERIC and at least 10 digits).
>
> Joe
>
> On Jul 20, 2012, at 6:16 AM, Andrus Adamchik wrote:
>
>>> How do I specify a primary key type to be BIGINT?
>>
>>
>> This is exactly what you need to do - in the Modeler change the PK column
>> type of DbEntity to BIGINT from INT.
>>
>> Andrus
>>
>>
>>
>> On Jul 20, 2012, at 3:19 AM, Joseph Senecal wrote:
>>
>>> We're using Oracle and sequences, not an AUTO_PK table to generate the
>>> keys. I've added logging into the custom code that pulls sequences, and the
>>> values are right at that point. But when I look at the code that calls
>>> that, I find right after the call:
>>> if (pk.getType() == Types.BIGINT) {
>>> return Long.valueOf(value);
>>> }
>>> else {
>>> // leaving it up to the user to ensure that PK does not exceed max
>>> int...
>>> return Integer.valueOf((int) value);
>>> }
>>>
>>> How do I specify a primary key type to be BIGINT? Would anything break if I
>>> changed my copy of this code to always return a Long instead of an Integer?
>>>
>>> Joe
>>>
>>> On Jul 19, 2012, at 5:15 PM, Aristedes Maniatis wrote:
>>>
>>>> Look at the columns widths of the AUTO_PK table?
>>>>
>>>> Ari
>>>>
>>>> On 20/07/12 10:07am, Joseph Senecal wrote:
>>>>> We are using Cayenne 3.1 M3 in production. We have just discovered that
>>>>> the primary keys being generated are being truncated to fit an int.
>>>>>
>>>>> The sequence returns numbers like 5224748590. I've confirmed this by
>>>>> logging the return value of LongPkRange.getNextPrimaryKey.
>>>>>
>>>>> But the inserts are using PKs like 929781294. 5224748590 - 2^32 =
>>>>> 929781294. Something is stripping off the high order bits of the primary
>>>>> keys.
>>>>>
>>>>> I've checked my model, there the primary key is Defined as Number(15) in
>>>>> the database, but it isn't defined as an attribute at all, so I can't
>>>>> specify the Java class to use for it.
>>>>>
>>>>> Anyone have any suggestions?
>>>>>
>>>>
>>>> --
>>>> -------------------------->
>>>> Aristedes Maniatis
>>>> GPG fingerprint CBFB 84B4 738D 4E87 5E5C 5EFA EF6A 7D2E 3E49 102A
>>>
>>>
>>
>
>