You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@cayenne.apache.org by Dave Dombrosky <do...@gmail.com> on 2008/08/05 23:05:09 UTC

Re: Can't extract a master key

For some reason or another, I am not seeing this problem anymore.  I
think this may have been caused by another issue, for which I will
create a separate thread.

On Thu, Jul 31, 2008 at 2:21 PM, Andrus Adamchik <an...@objectstyle.org> wrote:
> Hi Dave,
>
> MyDataObject is likely mapped to get its PK from the related "master"
> object. The exception means that the "master" object does not yet have a PK
> yet when MyDataObject is committed. So how is the PK generation set for the
> master object entity? Are you using auto-incremented PKs by any chance? Do
> you see the master saved before MyDataObject in the SQL log?
>
> Andrus
>
> On Jul 30, 2008, at 11:43 PM, Dave Dombrosky wrote:
>
>> I am currently getting a strange exception when trying to commit some
>> objects to the db.  I'm hoping someone here can help me figure it out.
>>
>> org.apache.cayenne.CayenneRuntimeException: [v.3.0-SNAPSHOT May 16
>> 2008 12:28:23] Can't extract a master key. Missing key (id), master ID
>> (<ObjectId:MyDataObject, TEMP:001A1A0065510101>)
>>     at
>> org.apache.cayenne.access.DataDomainSyncBucket$PropagatedValueFactory.create(DataDomainSyncBucket.java:303)
>>     at org.apache.cayenne.query.BatchQuery.getValue(BatchQuery.java:171)
>>     at
>> org.apache.cayenne.query.InsertBatchQuery.getValue(InsertBatchQuery.java:62)
>>     at
>> org.apache.cayenne.access.trans.InsertBatchQueryBuilder.getParameterValues(InsertBatchQueryBuilder.java:83)
>>     at
>> org.apache.cayenne.access.jdbc.BatchAction.runAsBatch(BatchAction.java:121)
>>     at
>> org.apache.cayenne.access.jdbc.BatchAction.performAction(BatchAction.java:80)
>>     at
>> org.apache.cayenne.access.DataNodeQueryAction.runQuery(DataNodeQueryAction.java:58)
>>     at
>> org.apache.cayenne.access.DataNode.performQueries(DataNode.java:230)
>>     at
>> org.apache.cayenne.access.DataDomainFlushAction.runQueries(DataDomainFlushAction.java:227)
>>     at
>> org.apache.cayenne.access.DataDomainFlushAction.flush(DataDomainFlushAction.java:145)
>>     at
>> org.apache.cayenne.access.DataDomain.onSyncFlush(DataDomain.java:821)
>>     at
>> org.apache.cayenne.access.DataDomain$2.transform(DataDomain.java:788)
>>     at
>> org.apache.cayenne.access.DataDomain.runInTransaction(DataDomain.java:847)
>>     at org.apache.cayenne.access.DataDomain.onSync(DataDomain.java:785)
>>     at
>> org.apache.cayenne.access.DataContext.flushToParent(DataContext.java:1164)
>>     at
>> org.apache.cayenne.access.DataContext.commitChanges(DataContext.java:1066)
>>
>> Any idea what this means?  I'm using some 1:1 mappings on the PK of
>> this table, and also some cayenne inheritance, so it's possible I set
>> something up wrong.
>>
>> -Dave
>>
>
>