Hi,
I'm running a Oracle database and trying to get Cayenne to work when having
primary keys that should be mapped to Long in Java. The data type in Oracle is
NUMBER(38), but when I create a SelectQuery and use DlpObject object=
(DlpObject) Cayenne.objectForQuery(ctx, this); to get the object, I get the
exception below. I'm using Cayenne version 4.0.2. Why does Cayenne think that
the type is Integer, and how can the issue be resolved?
10:59:36,285 WARN [com.dataloy.rest.exception.CayenneExceptionMapper] (default
task-1) : java.sql.SQLException: Numeric Overflow
at
oracle.jdbc.driver.NumberCommonAccessor.throwOverflow(NumberCommonAccessor.java:4136)
[ojdbc8.jar:12.2.0.1.0]
at
oracle.jdbc.driver.NumberCommonAccessor.getInt(NumberCommonAccessor.java:123)
[ojdbc8.jar:12.2.0.1.0]
at
oracle.jdbc.driver.GeneratedStatement.getInt(GeneratedStatement.java:197)
[ojdbc8.jar:12.2.0.1.0]
at
oracle.jdbc.driver.GeneratedScrollableResultSet.getInt(GeneratedScrollableResultSet.java:244)
[ojdbc8.jar:12.2.0.1.0]
at
org.jboss.jca.adapters.jdbc.WrappedResultSet.getInt(WrappedResultSet.java:1052)
at
org.apache.cayenne.access.types.IntegerType.materializeObject(IntegerType.java:38)
[cayenne-server-4.0.2.jar:4.0.2]
at
org.apache.cayenne.access.types.IntegerType.materializeObject(IntegerType.java:28)
[cayenne-server-4.0.2.jar:4.0.2]
at
org.apache.cayenne.access.jdbc.reader.FullRowReader.readRow(FullRowReader.java:52)
[cayenne-server-4.0.2.jar:4.0.2]
at
org.apache.cayenne.access.jdbc.reader.FullRowReader.readRow(FullRowReader.java:32)
[cayenne-server-4.0.2.jar:4.0.2]
at
org.apache.cayenne.access.jdbc.JDBCResultIterator.nextRow(JDBCResultIterator.java:104)
[cayenne-server-4.0.2.jar:4.0.2]
at
org.apache.cayenne.access.jdbc.JDBCResultIterator.allRows(JDBCResultIterator.java:80)
[cayenne-server-4.0.2.jar:4.0.2]
at
org.apache.cayenne.access.jdbc.SelectAction.performAction(SelectAction.java:138)
[cayenne-server-4.0.2.jar:4.0.2]
at
org.apache.cayenne.access.DataNodeQueryAction.runQuery(DataNodeQueryAction.java:97)
[cayenne-server-4.0.2.jar:4.0.2]
at org.apache.cayenne.access.DataNode.performQueries(DataNode.java:293)
[cayenne-server-4.0.2.jar:4.0.2]
at
org.apache.cayenne.access.DataDomainQueryAction.runQuery(DataDomainQueryAction.java:471)
[cayenne-server-4.0.2.jar:4.0.2]
at
org.apache.cayenne.access.DataDomainQueryAction.access$000(DataDomainQueryAction.java:72)
[cayenne-server-4.0.2.jar:4.0.2]
at
org.apache.cayenne.access.DataDomainQueryAction$2.perform(DataDomainQueryAction.java:446)
[cayenne-server-4.0.2.jar:4.0.2]
at
org.apache.cayenne.tx.DefaultTransactionManager.performInTransaction(DefaultTransactionManager.java:87)
[cayenne-server-4.0.2.jar:4.0.2]
at
org.apache.cayenne.tx.DefaultTransactionManager.performInLocalTransaction(DefaultTransactionManager.java:59)
[cayenne-server-4.0.2.jar:4.0.2]
at
org.apache.cayenne.tx.DefaultTransactionManager.performInTransaction(DefaultTransactionManager.java:52)
[cayenne-server-4.0.2.jar:4.0.2]
at
org.apache.cayenne.tx.DefaultTransactionManager.performInTransaction(DefaultTransactionManager.java:40)
[cayenne-server-4.0.2.jar:4.0.2]
at
org.apache.cayenne.access.DataDomainQueryAction.runQueryInTransaction(DataDomainQueryAction.java:443)
[cayenne-server-4.0.2.jar:4.0.2]
at
org.apache.cayenne.access.DataDomainQueryAction.execute(DataDomainQueryAction.java:122)
[cayenne-server-4.0.2.jar:4.0.2]
at
org.apache.cayenne.access.DataDomain.onQueryNoFilters(DataDomain.java:564)
[cayenne-server-4.0.2.jar:4.0.2]
at
org.apache.cayenne.access.DataDomain$DataDomainQueryFilterChain.onQuery(DataDomain.java:748)
[cayenne-server-4.0.2.jar:4.0.2]
at
org.apache.cayenne.tx.TransactionFilter.onQuery(TransactionFilter.java:49)
[cayenne-server-4.0.2.jar:4.0.2]
at
org.apache.cayenne.access.DataDomain$DataDomainQueryFilterChain.onQuery(DataDomain.java:748)
[cayenne-server-4.0.2.jar:4.0.2]
at
org.apache.cayenne.lifecycle.audit.AuditableFilter.onQuery(AuditableFilter.java:80)
[cayenne-lifecycle-4.0.2.jar:4.0.2]
at
org.apache.cayenne.access.DataDomain$DataDomainQueryFilterChain.onQuery(DataDomain.java:748)
[cayenne-server-4.0.2.jar:4.0.2]
at
org.apache.cayenne.lifecycle.changeset.ChangeSetFilter.onQuery(ChangeSetFilter.java:56)
[cayenne-lifecycle-4.0.2.jar:4.0.2]
at
org.apache.cayenne.access.DataDomain$DataDomainQueryFilterChain.onQuery(DataDomain.java:748)
[cayenne-server-4.0.2.jar:4.0.2]
at org.apache.cayenne.access.DataDomain.onQuery(DataDomain.java:556)
[cayenne-server-4.0.2.jar:4.0.2]
at
org.apache.cayenne.util.ObjectContextQueryAction.runQuery(ObjectContextQueryAction.java:406)
[cayenne-server-4.0.2.jar:4.0.2]
at
org.apache.cayenne.util.ObjectContextQueryAction.executePostCache(ObjectContextQueryAction.java:107)
[cayenne-server-4.0.2.jar:4.0.2]
at
org.apache.cayenne.util.ObjectContextQueryAction.execute(ObjectContextQueryAction.java:94)
[cayenne-server-4.0.2.jar:4.0.2]
at org.apache.cayenne.access.DataContext.onQuery(DataContext.java:971)
[cayenne-server-4.0.2.jar:4.0.2]
at
org.apache.cayenne.access.DataContext.performQuery(DataContext.java:960)
[cayenne-server-4.0.2.jar:4.0.2]
at org.apache.cayenne.Cayenne.objectForQuery(Cayenne.java:467)
[cayenne-server-4.0.2.jar:4.0.2]