Re: Can't extract a master key

From: Dave Dombrosky (dombr..mail.com)
Date: Tue Aug 05 2008 - 17:05:09 EDT

  • Next message: Dave Dombrosky: "Using "relationship != null" qualifier with ObjEntity Inheritance"

    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 <andru..bjectstyle.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
    >>
    >
    >



    This archive was generated by hypermail 2.0.0 : Tue Aug 05 2008 - 17:05:43 EDT