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