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

Reply via email to