Re: The right way to populate meaningful keys

From: Michael Gentry (mgentr..asslight.net)
Date: Thu Jul 30 2009 - 12:12:46 EDT

  • Next message: Lucas Holt: "Strange Problem"

    I think Juergen is dealing with an existing DB. I think many people
    have written of the meaningful PK problem, from the fact that the keys
    might eventually change over time to the fact that the speed of the
    joins is much worse for a varchar meaningful PK compared to an integer
    key that is generated.

    On Thu, Jul 30, 2009 at 12:03 PM, Eric Lazarus<ericllazaru..ahoo.com> wrote:
    >
    > (Reminder: Avoid meaningful keys when you have the choice, like anytime you are designing the database from scratch.
    >
    > Who wants to write the wikipedia article on the meaningful pointer problem...?)
    >
    > Eric
    > +1 (917) 589-6579
    >
    >
    > --- On Thu, 7/30/09, Michael Gentry <mgentr..asslight.net> wrote:
    >
    >> From: Michael Gentry <mgentr..asslight.net>
    >> Subject: Re: The right way to populate meaningful keys
    >> To: use..ayenne.apache.org
    >> Date: Thursday, July 30, 2009, 11:01 AM
    >> Hi Juergen,
    >>
    >> I suspect that you need to assign the key on the other side
    >> of your
    >> 1:1 relationship, too.  Another thing you could try
    >> doing is using the
    >> To Dep PK checkbox in the DbEntity Relationship panel to
    >> see if
    >> Cayenne will auto-copy your meaningful PK for you.
    >>
    >> http://cayenne.apache.org/doc/to-dep-pk-checkbox.html
    >>
    >> I'm not sure if the To Dep PK will work that way, but it is
    >> worth a
    >> try.  If you assign all the keys, though, it should
    >> work.
    >>
    >>
    >> On Thu, Jul 30, 2009 at 10:53 AM, Juergen Saar<juerge..saar.org>
    >> wrote:
    >> > This was my way  ...
    >> > But I ran in deep trouble with the ObjectId ... this
    >> seems not to be
    >> > sycronized
    >> >
    >> > My actual CayenneRuntimeException:
    >> > Can't extract a master key. Missing key (esd_abteil),
    >> master ID
    >> > (<ObjectId:EsSend, TEMP:0000021E6A770001>)
    >> >
    >> > It belongs to a 1:1 Relation and the PK-Values in
    >> source and target are
    >> > correctly set.
    >> > The Commit is interrupted and the Relation-Data are
    >> not inserted to DB.
    >> >
    >> >
    >> > In nearly all cases ... even when all data is inserted
    >> in DB the following
    >> > CayenneRuntimException is thrown:
    >> > Temporary ID hasn't been replaced on
    >> commit:{<ObjectId:EsSend,
    >> > TEMP:0000022273C50001>; new; ...}
    >> >
    >> > Any idea?
    >> > -Juergen-
    >> >
    >> > PS: I'm using the Version 2.0.4
    >> >
    >> >
    >> > 2009/7/30 Michael Gentry <mgentr..asslight.net>
    >> >
    >> >> Cayenne, by default, doesn't map keys from the
    >> DbEntity (database
    >> >> definition) to the ObjEntity (Java definition),
    >> but you can go into
    >> >> the ObjEntity and add them and it should be fine.
    >>  After you do that,
    >> >> just call the set/get methods for the keys to
    >> set/get them.  If you
    >> >> set a key on a new object before you
    >> commitChanges(), Cayenne will use
    >> >> your key instead of trying to generate one.
    >> >>
    >> >> mrg
    >> >>
    >> >>
    >> >> On Thu, Jul 30, 2009 at 1:24 AM, Juergen
    >> Saar<juerge..saar.org>
    >> wrote:
    >> >> > Hi all,
    >> >> >
    >> >> > I'm using cayenne within an old 4GL-Project
    >> with meaningful Primary Keys.
    >> >> >
    >> >> > Is there a 'best practice' to get this keys
    >> into the DataObject-Instance?
    >> >> >
    >> >> > Actually I've various trouble with this ...
    >> >> >
    >> >> >
    >> >> > Any hint or code-sniplet would be helpful
    >> ...
    >> >> > -Juergen-
    >> >> >
    >> >>
    >> >
    >>
    >
    >
    >
    >



    This archive was generated by hypermail 2.0.0 : Thu Jul 30 2009 - 12:13:17 EDT