A == B won't work even if you do it in 2 different EMs ;). Note that TopLink
replaces internally the relationship field marked for LAZY loading (explicitly
or implicitly) with its own collection implementation which can affect your
equals() result.
regards,
-marina
jeff wrote:
> hi jon thanks,
>
> hmmm. really?
>
> in a single JVM scenario, within a given transaction, i think what you
> say is right.
>
> however, are you saying that in one JVM i persist object A, then in
> another JVM i fetch the same object ID, A == B will be true? i don't see
> how that can be the case.
>
> note that in my case, it's the same JVM, but the persist and fetch are
> done in different transactions. the equals() test fails.
>
> sure i can post some code ... but before i bother, i'll wait for a
> response to make sure i am making any sense here.
>
> */Jon Miller <jemiller_at_uchicago.edu>/* wrote:
>
> It would probably help if you posted some code. As far as I know, A
> and B in
> what you described below should not only be equal objects, they
> should be
> the exact same object. i.e. A == B should return true.
>
> Jon
>
> ----- Original Message -----
> From: "jeff"
> To:
> Sent: Friday, March 16, 2007 11:10 AM
> Subject: Re: calling equals() on a detached object
>
>
> > hi jon,
> >
> > yes :) i did, and i've tested my impl of equals and it works in
> the simple
> > POJO case.
> >
> > thanks.
> >
> > Jon Miller wrote: Did you override equals()?
> >
> > Jon
> >
> > ----- Original Message -----
> > From: "jeff"
> > To:
> >
> > Sent: Wednesday, March 14, 2007 7:25 PM
> > Subject: calling equals() on a detached object
> >
> >
> >> i'd like to be able to do this ...
> >>
> >> 1. create object A
> >> 2. persist object A
> >> 3. find() object B based on A's ID (they should be "equal()"
> >> 4. detach B
> >> 3. call A.equals(B) and get a true result
> >>
> >> i've done this, and it does not work. as far as i can tell w/ the
> >> debugger, they are equal. the problem appears to be when a field
> of type
> >> Set is compared.
> >>
> >> when i poke into B, and try to look into the Set, i have to bury
> way down
> >> in some toplink objects before i find the right values for the
> set, but
> >> they ARE in there somewhere.
> >>
> >> also, to make sure B is all fetched, i called B.equals(B) before
> >> detaching, which should load everything i care about i think. if
> there's
> >> a
> >> better way to do this, i'd like to hear it :)
> >>
> >> when i call toString() on the Set inside of A and B, the format is
> >> slightly different but it does contain the same data: for
> example ...
> >>
> >> A's set: [zipCodes=[11111, 22222, 33333]]
> >> B's set: {{[zipCodes=[11111, 22222, 33333]]}}
> >>
> >> so i guess this means the same data is there, but i don't
> understand why
> >> "equals" is failing.
> >>
> >> any ideas?
> >> thanks.
> >>
> >>
> >>
> >>
> >> ---------------------------------
> >> No need to miss a message. Get email on-the-go
> >> with Yahoo! Mail for Mobile. Get started.
> >
> >
> >
> >
> > ---------------------------------
> > Expecting? Get great news right away with email Auto-Check.
> > Try the Yahoo! Mail Beta.
>
>
> ------------------------------------------------------------------------
> Bored stiff? <http://us.rd.yahoo.com/evt=49935/*http://games.yahoo.com>
> Loosen up...
> Download and play hundreds of games for free
> <http://us.rd.yahoo.com/evt=49935/*http://games.yahoo.com> on Yahoo! Games.