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
>

Reply via email to