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 >> >> >