Long primary keys

Vemund Jakobsen <[email protected]>
Newsgroups gmane.comp.java.cayenne.user
Message-ID <pony-3c9dc4500866c133e92e3c270d2cb27e372b63d7-5a63175117db611633b8d5178dfc5441bb2abb09@user.cayenne.apache.org>
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]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.