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