Armin, Thanks for your help. Changing of column type for MAX_KEY in repository_internal.xml caused OJB to accept larger IDs as you said.
thanks! -phil -----Original Message----- From: Armin Waibel [mailto:[EMAIL PROTECTED] Sent: Tuesday, February 03, 2004 7:18 PM To: OJB Users List Subject: Re: OJB auto-generated Id as Double? Hi Phil, Phil Armour wrote: > All, > > I am having issues with generating id's of type double. hope I understand your question. You want to use a PK/id field of java type double - right? > The sql below that should return the max_key from the OJB_HL_SEQ table > returns the value: 100001334000 which is larger than an Integer can be. > Thus we use a Double for the id's. Why not using a Long? > However, the OJB sequence seems to > assume the field MAX_KEY is an integer, and therefore throws a Numeric > Overflow SQLException as seen in the traces below. Is this a problem > for anyone else and has a fix been discussed? I think it's a bug in repository_internal.xml. We declare MAX_KEY as Integer, but it should be BIGINT. Does changing of column type for MAX_KEY solve your problem? regards, Armin > > In the logs below i found it interesting that that ojb seems to be looking for a > Long: > at > org.apache.ojb.broker.util.sequence.SequenceManagerHighLowImpl.getUniqueLong(SequenceManagerHighLowImpl.java:191) > but the Oracle call seems to be looking for an Int: > at oracle.jdbc.driver.OracleResultSet.getInt(OracleResultSet.java:1551) > > > [Full Exception Trace]: > > 1075770103075|0|1|statement|SELECT > A0.MAX_KEY,A0.TABLENAME,A0.GRAB_SIZE,A0.VERSION,A0.FIELDNAME FROM > OJB_HL_SEQ A0 WHERE (A0.TABLENAME LIKE ? ) AND A0.FIELDNAME LIKE ? |SELECT > A0.MAX_KEY,A0.TABLENAM > E,A0.GRAB_SIZE,A0.VERSION,A0.FIELDNAME FROM OJB_HL_SEQ A0 WHERE (A0.TABLENAME LIKE > 'SEQ_TRK_CASE' ) > AND A0.FIELDNAME LIKE 'ID' > java.sql.SQLException: Numeric Overflow > at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:180) > at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:222) > at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:285) > at oracle.jdbc.driver.OracleStatement.getIntValue(OracleStatement.java:3677) > at > oracle.jdbc.driver.OracleResultSetImpl.getInt(OracleResultSetImpl.java:332) > at oracle.jdbc.driver.OracleResultSet.getInt(OracleResultSet.java:1551) > at com.p6spy.engine.spy.P6ResultSet.getInt(P6ResultSet.java:261) > at > org.apache.ojb.broker.util.SqlTypeHelper.getObjectFromColumn(SqlTypeHelper.java:573) > at > org.apache.ojb.broker.util.SqlTypeHelper.getObjectFromColumn(SqlTypeHelper.java:328) > at > org.apache.ojb.broker.util.SqlHelper.getObjectFromColumn(SqlHelper.java:169) > > ... > > rethrown as org.apache.ojb.broker.PersistenceBrokerException: Error reading class > type: org.apache.ojb.broker.util.sequence.HighLowSequence from result set: Numeric > Overflow > at > org.apache.ojb.broker.accesslayer.RowReaderDefaultImpl.readObjectArrayFrom(RowReaderDefaultImpl.java:171) > at > org.apache.ojb.broker.accesslayer.RsIterator.getObjectFromResultSet(RsIterator.java:426) > at org.apache.ojb.broker.accesslayer.RsIterator.next(RsIterator.java:263) > at > org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(PersistenceBrokerImpl.java:1403) > at > org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(PersistenceBrokerImpl.java:1563) > at > org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(PersistenceBrokerImpl.java:1599) > at > org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(PersistenceBrokerImpl.java:1588) > at > org.apache.ojb.broker.core.PersistenceBrokerImpl.getObjectByQuery(PersistenceBrokerImpl.java:1856) > at > org.apache.ojb.broker.core.DelegatingPersistenceBroker.getObjectByQuery(DelegatingPersistenceBroker.java:291) > at > org.apache.ojb.broker.core.DelegatingPersistenceBroker.getObjectByQuery(DelegatingPersistenceBroker.java:291) > at > org.apache.ojb.broker.util.sequence.SequenceManagerHighLowImpl.getSequence(SequenceManagerHighLowImpl.java:251) > at > org.apache.ojb.broker.util.sequence.SequenceManagerHighLowImpl.getUniqueLong(SequenceManagerHighLowImpl.java:191) > at > org.apache.ojb.broker.util.sequence.AbstractSequenceManager.getUniqueValue(AbstractSequenceManager.java:125) > at > org.apache.ojb.broker.util.BrokerHelper.getAutoIncrementValue(BrokerHelper.java:303) > at > org.apache.ojb.broker.util.BrokerHelper.getValuesForObject(BrokerHelper.java:349) > at > org.apache.ojb.broker.util.BrokerHelper.getKeyValues(BrokerHelper.java:215) > at org.apache.ojb.broker.Identity.init(Identity.java:165) > at org.apache.ojb.broker.Identity.<init>(Identity.java:129) > > ... > > 1075770103125|0|1|rollback|| > 1075770103125|0|0|rollback|| > ERROR 2004-02-02 20:01:43,125 [EMAIL > PROTECTED]:org.apache.ojb.broker.metadata.ClassNotPersistenceCapableException: Can > not init Identity for given object beans.CaseBean: Could not obtain next object: > Error reading class type: org.apache.ojb.broker.util.sequence.HighLowSequence from > result set: Numeric Overflow > > > Regards, > Phil Armour > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
