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
