;)

2009/11/18 Eduardo Scoz <[email protected]>

> Fabio, the problem was ghosting after all.
>
> Thanks a lot for the help.
>
> Eduardo
>
>
> On Tue, Nov 17, 2009 at 1:11 PM, Fabio Maulo <[email protected]> wrote:
>
>> Ups sorry
>>
>> http://fabiomaulo.blogspot.com/2008/10/how-test-your-mappings-ghostbuster.html
>>
>>
>> 2009/11/17 Eduardo Scoz <[email protected]>
>>
>>> Thanks, Fabio. I never heard of the ghostbuster before, so I'll give that
>>> one a try.
>>>
>>> Best regards,
>>>
>>> Eduardo
>>>
>>>
>>> On Tue, Nov 17, 2009 at 12:46 PM, Fabio Maulo <[email protected]>wrote:
>>>
>>>> mmmm.... you have a Ghost;
>>>> NH have detected a change in C.
>>>> Try to recreate the issue in a test but after run the Ghost-Buster.
>>>>
>>>>
>>>> 2009/11/17 Eduardo Scoz <[email protected]>
>>>>
>>>>> I'm not trying to blame NH, just trying to understand whats going on.
>>>>> It may very likely be my code, I understand that. Sorry if I passed the
>>>>> wrong impression.
>>>>>
>>>>> Here's what I have:
>>>>>
>>>>> A - mutable has one-to-many with B
>>>>> B - immutable, has one-to-one with C and one-to-many with D
>>>>> C and D - mutable
>>>>>
>>>>>
>>>>> I'm changing the state of A and doing a SaveOrUpdate(A), and that is
>>>>> causing SQL like:
>>>>>
>>>>> UPDATE A
>>>>> UPDATE C
>>>>>
>>>>> B is not getting saved, and neither is D.
>>>>>
>>>>> All I'm asking is: is this the expected behavior? If it is, great, I
>>>>> can deal with it. If its not, I can create a test case to help find the
>>>>> issue.
>>>>>
>>>>> Thanks Fabio.
>>>>>
>>>>>
>>>>>
>>>>> On Tue, Nov 17, 2009 at 12:26 PM, Fabio Maulo <[email protected]>wrote:
>>>>>
>>>>>> btw Eduardo,
>>>>>> don't try to find the solution inside NH, your problem is in your
>>>>>> code... you are changing something that shouldn't change.
>>>>>>
>>>>>> 2009/11/17 Fabio Maulo <[email protected]>
>>>>>>
>>>>>> no it shouldn't.
>>>>>>> What you are changing is not some value of the "middle" object but
>>>>>>> the state of a mutable object (the "right" side).
>>>>>>> example:
>>>>>>> - A has a one-to-one with B
>>>>>>> - A is NOT mutable
>>>>>>> - B is mutable
>>>>>>>
>>>>>>> When you change a property value in B what is changed ? only B and NH
>>>>>>> must track it.
>>>>>>>
>>>>>>>
>>>>>>> 2009/11/17 Eduardo Scoz <[email protected]>
>>>>>>>
>>>>>>>> Yeah, I can see that's the reason for the object to be saved.
>>>>>>>>
>>>>>>>> My point, though is:  shouldn't the fact that the middle object is
>>>>>>>> immutable prevent the last object from getting saved when using a
>>>>>>>> one-to-one? This seems to be the behavior with sets that belong to the
>>>>>>>> middle object.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Tue, Nov 17, 2009 at 11:54 AM, Fabio Maulo <[email protected]
>>>>>>>> > wrote:
>>>>>>>>
>>>>>>>>> You have answered your question by yourself.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> 2009/11/17 Eduardo Scoz <[email protected]>
>>>>>>>>>
>>>>>>>>>> Sorry, the only mutable object in my example is the "middle" one,
>>>>>>>>>> User. The right-side one (UserPreferences) is mutable as it needs to 
>>>>>>>>>> be
>>>>>>>>>> updated from a different part of the system.
>>>>>>>>>>
>>>>>>>>>> Thanks Fabio.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Tue, Nov 17, 2009 at 11:33 AM, Fabio Maulo <
>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>
>>>>>>>>>>> and those object are mutable or not ? (I mean the "right" side of
>>>>>>>>>>> the one-to-one)
>>>>>>>>>>>
>>>>>>>>>>> 2009/11/17 Eduardo Scoz <[email protected]>
>>>>>>>>>>>
>>>>>>>>>>> Hi,
>>>>>>>>>>>>
>>>>>>>>>>>> I'm not sure if this is a bug or a feature, so I thought it
>>>>>>>>>>>> would be worthy to post here.
>>>>>>>>>>>>
>>>>>>>>>>>> It seems that during a save operation on a tree that contains
>>>>>>>>>>>> immutable objects, even though those objects are not updated 
>>>>>>>>>>>> (correct
>>>>>>>>>>>> behavior), objects that have a one-to-one relationship to those 
>>>>>>>>>>>> ones get
>>>>>>>>>>>> updated.
>>>>>>>>>>>>
>>>>>>>>>>>> For example:
>>>>>>>>>>>>
>>>>>>>>>>>> I have a object UserData, with a many-to-one to User with a
>>>>>>>>>>>> one-to-one UserPreferences.
>>>>>>>>>>>> User in this case is immutable and kept in read-only cache.
>>>>>>>>>>>> When I do a save on the UserData object, that object gets saved,
>>>>>>>>>>>> and so does UserPreferences.
>>>>>>>>>>>>
>>>>>>>>>>>> Is that the correct behavior? I would expect only UserData to be
>>>>>>>>>>>> saved. Sets that are part of User are not updated.
>>>>>>>>>>>>
>>>>>>>>>>>> Thanks guys,
>>>>>>>>>>>>
>>>>>>>>>>>> Eduardo Scoz
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Fabio Maulo
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Fabio Maulo
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Fabio Maulo
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Fabio Maulo
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Fabio Maulo
>>>>
>>>
>>>
>>
>>
>> --
>> Fabio Maulo
>>
>
>


-- 
Fabio Maulo

Reply via email to