Re: UUID as primary key

From: Øyvind Harboe (oyvind.harbo..ylin.com)
Date: Fri Jul 21 2006 - 17:35:35 EDT

  • Next message: Andrus Adamchik: "Re: How can i set jdbc access properties?"

    On 7/13/06, Andrus Adamchik <andru..bjectstyle.org> wrote:
    >
    >
    > On Jul 13, 2006, at 12:32 PM, Øyvind Harboe wrote:
    >
    > > On 7/12/06, Gentry, Michael (Contractor)
    > > <michael_gentr..anniemae.com> wrote:
    > >> You could override setPersistenceState() in your Treatment class:
    > >>
    > >> public void setPersistenceState(int state)
    > >> {
    > >> super.setPersistenceState(state);
    > >>
    > >> // If object was just created, set PK
    > >> if (state == PersistenceState.NEW)
    > >> setId(UUID.randomUUID());
    > >> }
    > >
    > > Hmmm... I tried that, but setPersistanceState() is invoked multilple
    > > times with state=NEW and thus I'm changing the UUID each time. That
    > > can't be right.
    >
    > No it can't - it should only be invoked once per object.

    As far as I can tell in the debugger setPersistanceState(state=NEW) is being
    invoked multiple times..

    First when I create the object and then later on when I commit(there are
    child contexts involved, and I first commit to parent, then to the
    database):

            if (dataObject.getObjectId() == null) {
                dataObject.setObjectId(new ObjectId(objEntity.getName())); //
    DataContext.registerNewObject(DataObject) line: 920
            }

    Treatment(Workaround).setPersistenceState(int) line: 31
    DataContext.registerNewObject(DataObject) line: 920
    ChildDiffLoader.nodeCreated(Object) line: 110
    NodeCreateOperation.apply(GraphChangeHandler) line: 73
    CompoundDiff.apply(GraphChangeHandler) line: 133
    ObjectStoreGraphDiff.apply(GraphChangeHandler) line: 155
    DataContext.onContextFlush(ObjectContext, GraphDiff, boolean) line: 1215
    DataContext.onSync(ObjectContext, GraphDiff, int) line: 1194
    DataContext.flushToParent(boolean) line: 1261
    DataContext.commitChanges() line: 1165
    EditTreatment$Enhance_217(EditTreatment).submit(IRequestCycle) line: 142

    -- 
    Øyvind Harboe
    http://www.zylin.com
    



    This archive was generated by hypermail 2.0.0 : Fri Jul 21 2006 - 17:36:00 EDT