Is this a legacy database you're mapping out? Do you really need to use a composite key here? What's the "PropertyId" referencing?
Here's what I think is happening here. You have these entities: User< -> Favourite < - > Property You create a Favourite assigning it to both a User and a Property. All is fine. You remove the Favourite from the user, NH attempts to set a Null value for the composite key. Null values aren't allowed in keys so it freaks out. You add all-delete-orphan to the mapping. Removing the favourite from the collection DOES NOT create an orphan because it is still referenced by the Property mapping. Best: Don't use composite ID. Might work: Remove the reference to both Property and User before attempting to save. -Will On Tue, Dec 23, 2008 at 4:45 PM, Craig van Nieuwkerk <[email protected]> wrote: > Here is the favourite mapping. > <?xml version="1.0" encoding="utf-8" ?> > <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" > namespace="BaseEstate.Model.Entities" schema="BaseEstate" > assembly="BaseEstate.Model" default-lazy="false"> > <class name="BaseEstate.Model.Entities.Favourite, BaseEstate.Model" > table="Favourite" > > <composite-id unsaved-value="any"> > <key-property name="PropertyId" column="PropertyId" > type="string"></key-property> > <key-property name="UserId" column="UserId" type="int"></key-property> > </composite-id> > <property name="Title" column="Title" type="string" /> > <property name="Link" column="Link" type="string" /> > </class> > </hibernate-mapping> > > > On Wed, Dec 24, 2008 at 4:17 AM, Will Shaver <[email protected]> wrote: >> >> Post your mapping for the Favourite class? >> >> It looks like you probably have a NOT NULL constraint on the foreign >> key mapping the Favourite to User. Do other collections reference the >> Favourite class? Sometimes all-delete-orphan doesn't work if the >> entity is not actually an orphan. >> >> >> -Will >> >> On Tue, Dec 23, 2008 at 5:23 AM, Craig van Nieuwkerk <[email protected]> >> wrote: >> > Thanks, but I still get the same error. >> > >> > On Wed, Dec 24, 2008 at 12:04 AM, Stefan Sedich >> > <[email protected]> >> > wrote: >> >> >> >> Try Change cascade on the collection to all-delete-orphan so that the >> >> child items are removed on deletion >> >> >> >> Cheers >> >> >> >> Stefan Sedich >> >> >> >> >> >> On 23/12/2008, at 9:40 PM, "Craig van Nieuwkerk" <[email protected]> >> >> wrote: >> >> >> >> > I have a Master Detail relationship configured. The hbm file is >> >> > below. When I run some code like this >> >> > >> >> > Favourite favourite = favourites.Find(f => f.Id== id); >> >> > user.Favourites.Remove(favourite); >> >> > m_UserRepository.Save(ref user); >> >> > >> >> > I get the error message >> >> > >> >> > NHibernate.Exceptions.GenericADOException: could not delete >> >> > collection rows: [Model.Entities.User.Favourites#249][SQL: SQL not >> >> > available] ---> System.Data.SqlClient.SqlException: Cannot insert >> >> > the value NULL into column 'UserId', table 'BE.Favourite'; column >> >> > does not allow nulls. UPDATE fails. >> >> > >> >> > Any suggestions on what this means please help. >> >> > >> >> > Craig. >> >> > >> >> > <?xml version="1.0" encoding="utf-8" ?> >> >> > <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" >> >> > namespace="Model.Entities" schema="BE" assembly="Model" default- >> >> > lazy="false"> >> >> > <class name="Model.Entities.User, Model" table="Users" > >> >> > <id name="UserId" column="UserId" type="int" unsaved-value="0"> >> >> > <generator class="native" /> >> >> > </id> >> >> > <property name="UserName" column="UserName" type="string" /> >> >> > >> >> > <bag name="Favourites" cascade="all" lazy="true"> >> >> > <key column="UserId"/> >> >> > <one-to-many class="Model.Entities.Favourite, Model"/> >> >> > </bag> >> >> > >> >> > </class> >> >> > </hibernate-mapping> >> >> > >> >> > >> >> > > >> >> >> >> >> > >> > >> > > >> > >> >> > > > > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
