I was assuming we were talking about a single persistence context.
Obviously, if you're using two different JVMs the references aren't going to
be the same. If equals() isn't working, there's probably something wrong
with your equals() implementation, that's why I said it would be helpful if
you posted the code.
Jon
----- Original Message -----
From: "Marina Vatkina" <Marina.Vatkina_at_Sun.COM>
To: <persistence_at_glassfish.dev.java.net>
Sent: Friday, March 16, 2007 12:51 PM
Subject: Re: calling equals() on a detached object
>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.
>