Thanks for the explanation, greatly appreciated.
That makes sense.

I'm still learning...

On 9 mar, 17:23, Jay Chapman <[email protected]> wrote:
> The answer to that question is that you don't.  Think of NHibernate as a
> synchronization tool, not a database persistence tool.  It's trying to make
> it so that the database is a form of "extended memory".  You want both the
> Person assigned to the Car and the Car added to the person's collection when
> you load it from the database right?  Therefore that's what it should look
> like before you save it as well.
>
> This is a far superior way to handle it in your code because now you don't
> have to worry about if you are dealing with a person/car combination that
> has been persisted and loaded already or not.  Your code knows that the
> Person should always be assigned and the collection of cars should match.
>
> Writing methods to add the car to such as Person.AddCar(Car car) is a simple
> pattern to follow which I believe most of us use.  There used to be tools
> that would do this for you, but I found that confusing and error prone.
>
> On Mon, Mar 9, 2009 at 12:39 PM, graphicsxp <[email protected]>wrote:
>
>
>
> > Thanks Jay,
>
> > So basically you are saying that what I do is correct, but your
> > solution is a shortcut as you are assigning the Person entity to the
> > Car entity within the Add() method.
>
> > Fair enough, but my initial question was, how can I do it without
> > having to specify the Person entity, i.e have the attribute
> > inverse=false without raising an exception....
>
> > On 9 mar, 16:37, graphicsxp <[email protected]> wrote:
> > > ok i got it you mean adding the Car entity to my collection of cars in
> > > Person.  :)
>
> > > But that's exactly what I do already :
>
> > > myPerson.cars.add(new Car(1, myPerson))
> > > myPerson.cars.add(new Car(2, myPerson))
>
> > > sorry I should have included this code in my first post.
>
> > > Yet I still get the problem.....
>
> > > On 9 mar, 16:22, graphicsxp <[email protected]> wrote:
>
> > > > Hi Roger,
> > > > can you explain ?  what's in AddCar ?
>
> > > > On 9 mar, 15:56, Roger Kratz <[email protected]> wrote:
>
> > > > > myPerson.AddCar(myCar)
>
> > > > > -----Original Message-----
> > > > > From: [email protected] [mailto:[email protected]] On
> > Behalf Of graphicsxp
> > > > > Sent: den 9 mars 2009 16:52
> > > > > To: nhusers
> > > > > Subject: [nhusers] issue with bi-directional one-to-many association
> > when saving
>
> > > > > Hello,
>
> > > > > I have a question about bidirectional one-to-many associations. Let's
> > > > > consider we have a class Person which can hold a collection of
> > > > > entities of type Car.
>
> > > > > My mapping file for Car would have something like :
>
> > > > >  <many-to-one name="PersonID" cascade="none" column="PersonID" not-
> > > > > null="true" />
>
> > > > > and my mapping file for Person would contain :
>
> > > > >  <bag name="Cars" inverse="true" lazy="true" cascade="save-update">
> > > > >       <key column="PersonID" />
> > > > >       <one-to-many class="Car" />
> > > > >   </bag>
>
> > > > > Now that implies that anytime I want to create a Car object I also
> > > > > need to do :
>
> > > > > myPerson  = new Person()
> > > > > myCar.person = myPerson
>
> > > > > This is tedious and I don't want to have to do that. The problem is
> > > > > that if I set the attribute inverse to false, then when I try to save
> > > > > a Person, I get an exception because all the Car entities I've added
> > > > > to this Person have a null CarID. If I set CarID to be
> > not-null=false,
> > > > > then there is no exception but it inserts null into my database.
>
> > > > > How can I have NHibernate to automatically set the PersonID field of
> > > > > each Car objects in my collection to the PersonID of the Person I
> > just
> > > > > saved ?
>
> > > > > Hope this is clear enough
> > > > > Thanks
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to