Re: Register DO with DC Multiple Times?

From: Andrus Adamchik (andru..bjectstyle.org)
Date: Fri Jul 08 2005 - 02:33:35 EDT

  • Next message: Andrus Adamchik: "Re: Register DO with DC Multiple Times?"

    Good catch. Seems like a bug to me. I guess prior to 1.2 it wasn't
    that visible as there was no auto-registering of related objects.
    I'll create a test case to verify it and check a fix shortly.

    Andrus

    On Jul 8, 2005, at 9:39 AM, Kevin Menard wrote:

    > Hey all,
    >
    > I just spent the last few hours debugging this webapp of mine. Since
    > it's using Tapestry 4, I thought I had messed up some of the
    > persistence
    > stuff or something. Instead, I came across something in Cayenne that
    > just doesn't seem right.
    >
    > If a DO gets registered with a DC twice, it'll attempt to commit
    > twice.
    > Since it is the same exact object however, only one PK will be
    > generated, which causes the commit to fail. Now, I'd certainly agree
    > that you probably shouldn't try to register twice, but in my case, the
    > first registration actually came from setting an already committed
    > object as relationship parameter. Cayenne is able to auto-register
    > the
    > DO that the relationship value is being set on and it does so
    > transparently, which is cool. However, its side effects are not
    > transparent.
    >
    > My guess is that DataContext#registerNewObject() should consult its
    > object store before calling registerNewObjectWithEntity(), or the
    > latter
    > should perform the check. Or maybe the ObjectStore should use a
    > HashSet
    > rather than an ArrayList. I really don't know, but like I said, it
    > should be transparent.
    >
    > Am I correct in this assessment? It is getting rather late here, so I
    > may just be delusional . . .
    >
    > --
    > Kevin
    >
    >



    This archive was generated by hypermail 2.0.0 : Fri Jul 08 2005 - 02:33:36 EDT