I've hit something like this once, in oracle + hibernate, when I had a bucket-load of joins in the query. The driver was freaking out on one of the FK values (which was NOT a large number... <10; I could reproduce it with a test case where the id sequences were starting over with 1/clean db). I can't tell you why the driver thought it was a numeric overflow exception. But I can say that reducing the number of joins in the query solved the problem. That said... it was a truly monster query (of the sort only typically generated by an ORM doing lots and lots of (joint) prefetching :).
HTH, Robert On May 9, 2011, at 5/95:49 PM , Mike Kienenberger wrote: > I've got a Cayenne 1.1 application that has been running fine for years. > Today we hit a strange error, a Numeric Overflow on a relationship list > fetch. > > I've looked through the tables involved (account, user_account_relationship) > and didn't find any large values. > I am still looking through other table values. I guess maybe it's hitting > the problem on prefetching something else? > > Anyone have any other ideas? > > > > Caused by: org.objectstyle.cayenne.CayenneRuntimeException: [v.1.1-dev March > 27 2008] Query exception. > at > org.objectstyle.cayenne.access.util.SelectObserver.nextQueryException(SelectObserver.java:213) > at > org.objectstyle.cayenne.access.DataNode.performQueries(DataNode.java:364) > at > org.objectstyle.cayenne.access.DataDomain.performQueries(DataDomain.java:654) > at > org.objectstyle.cayenne.access.DataContext.performQueries(DataContext.java:1408) > at > org.objectstyle.cayenne.access.Transaction.performQueries(Transaction.java:179) > at > org.objectstyle.cayenne.access.DataContext.performQueries(DataContext.java:1366) > at > org.objectstyle.cayenne.access.DataRowStore.getSnapshot(DataRowStore.java:310) > at > org.objectstyle.cayenne.access.ObjectStore.getSnapshot(ObjectStore.java:737) > at > org.objectstyle.cayenne.access.ObjectStore.resolveHollow(ObjectStore.java:977) > at > org.objectstyle.cayenne.CayenneDataObject.resolveFault(CayenneDataObject.java:217) > at > org.objectstyle.cayenne.CayenneDataObject.readProperty(CayenneDataObject.java:227) > at > com.xyz.cayenne.ebpp.entity.generated._Account.getUserAccountRelationshipList(_Account.java:1782) > at > com.xyz.struts.ebpp.business.batch.BillingTasks.checkForNewBills(BillingTasks.java:120) > at > com.xyz.struts.ebpp.business.batch.BillingTasks.recoverCheckForNewBills(BillingTasks.java:104) > at > com.xyz.struts.ebpp.business.batch.TaskProcessor.processBatchJob(TaskProcessor.java:99) > at > com.xyz.struts.ebpp.business.batch.CronBasedTaskScheduler.checkScheduledEvents(CronBasedTaskScheduler.java:449) > ... 2 more > Caused by: java.sql.SQLException: Numeric Overflow > at > oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125) > at > oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:162) > at > oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:227) > at > oracle.jdbc.driver.NumberCommonAccessor.throwOverflow(NumberCommonAccessor.java:6797) > at > oracle.jdbc.driver.NumberCommonAccessor.getInt(NumberCommonAccessor.java:106) > at > oracle.jdbc.driver.OracleResultSetImpl.getInt(OracleResultSetImpl.java:482) > at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:585) > at > org.objectstyle.cayenne.access.types.DefaultType.materializeObject(DefaultType.java:243) > at > org.objectstyle.cayenne.access.DefaultResultIterator.readDataRow(DefaultResultIterator.java:250) > at > org.objectstyle.cayenne.access.DefaultResultIterator.nextDataRow(DefaultResultIterator.java:194) > at > org.objectstyle.cayenne.access.DefaultResultIterator.dataRows(DefaultResultIterator.java:224) > at org.objectstyle.cayenne.access.DataNode.runSelect(DataNode.java:413) > at > org.objectstyle.cayenne.access.DataNode.performQueries(DataNode.java:350) > ... 16 more
