Thank you, Andrus! Mapping the DbAtribbute to BIGINT resolved the problem. 
Thanks for the quick responses :)

On 2019/11/14 08:25:02, Andrus Adamchik <[email protected]> wrote: 
> There is a default mapping of JDBC types to Java types. So if you map your 
> DbAttribute to BIGINT, and (in the absence of ObjAttribute that overrides it 
> with an explicit Java type) you'll get a Long.
> 
> (BTW, you don't seem to be subscribed to the list.. The original message came 
> through moderation. I hope you didn't miss the earlier replies).
> 
> Andrus
> 
> > On Nov 14, 2019, at 11:20 AM, Vemund Jakobsen <[email protected]> wrote:
> > 
> > If I have tables with long primary keys, how does Cayenne resolve the type 
> > of the foreign keys? Does the type have to be specified in the generated 
> > map file by using obj-attribute? 
> > The map file I have  contains the below entry and it works if I do a GET 
> > request via API. If I do a GET request on the the same object and it has 
> > foreign key ref. to another table with long key, I will get the error in my 
> > initial post.
> > <obj-attribute name="key" type="java.lang.Long" 
> > db-attribute-path="COMPANY_ID"/>
> > 
> > On 2019/11/13 11:12:25, Vemund Jakobsen <[email protected]> wrote: 
> >> 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]
> >> 
> 
> 

Reply via email to