Fixed it: on the key element of the set, I added not-null="true":
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="NHibernateTest" assembly="NHibernateTest" auto- import="true" default-access="property"> <class name="M" table="`M`"> <id name="Id" column="`MID`"> <generator class="identity"/> </id> <set name="RecentO" mutable="false" optimistic-lock="false" access="none" where="(Date >= (GetDate() - 30))"> <key column="`MID`" not-null="true"/> <one-to-many class="O"/> </set> </class> </hibernate-mapping> Thanks, anyway! RP On Oct 5, 9:58 pm, Ricardo Peres <rjpe...@gmail.com> wrote: > Well, I tried it after you mentioned it, but I believe it is not even > closely related to my problem, since I'm not deleting anything. > > On Oct 5, 2:36 pm, webpaul <goo...@webpaul.net> wrote: > > > > > Have you tried cascade="none"? > > > On Oct 4, 3:27 am, Ricardo Peres <rjpe...@gmail.com> wrote: > > > > Hello, > > > > I have an entity containing a query-only property with a where clause > > > (similar to Ayende's example). Whenever I try to list a collection of > > > these entities and I load a collection that refers to them, NHibernate > > > tries to save each of my entities, and causes an exception. My > > > entities are like this: > > > > <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" > > > namespace="NHibernateTest" assembly="NHibernateTest" auto- > > > import="true" default-access="property"> > > > <class name="O" table="`O`"> > > > <id name="Id" column="`ID`"> > > > <generator class="identity"/> > > > </id> > > > <property name="Date" column="`DATE`"/> > > > <many-to-one name="M" column="`MID`" fetch="join" outer- > > > join="false" not-null="true"/> > > > </class> > > > </hibernate-mapping> > > > > <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" > > > namespace="NHibernateTest" assembly="NHibernateTest" auto- > > > import="true" default-access="property"> > > > <class name="M" table="`M`"> > > > <id name="Id" column="`MID`"> > > > <generator class="identity"/> > > > </id> > > > <set name="RecentO" mutable="false" optimistic-lock="false" > > > access="none" where="(Date >= (GetDate() - 30))"> > > > <key column="`MID`"/> > > > <one-to-many class="O"/> > > > </set> > > > </class> > > > </hibernate-mapping> > > > > And my classes: > > > > namespace NHibernateTest > > > { > > > [Serializable] > > > public class O > > > { > > > public virtual Int32 Id > > > { > > > get; > > > private set; > > > } > > > > public virtual M M > > > { > > > get; > > > set; > > > } > > > > public virtual DateTime Date > > > { > > > get; > > > set; > > > } > > > > public override Boolean Equals(Object obj) > > > { > > > if (!(obj is O)) > > > { > > > return (false); > > > } > > > > if (Object.ReferenceEquals(this, obj) == true) > > > { > > > return (true); > > > } > > > > O other = obj as O; > > > > return (other.Id == this.Id); > > > } > > > } > > > > [Serializable] > > > public class M > > > { > > > public virtual Int32 Id > > > { > > > get; > > > private set; > > > } > > > > public virtual IList<O> O > > > { > > > get; > > > private set; > > > } > > > > public override Boolean Equals(Object obj) > > > { > > > if (!(obj is M)) > > > { > > > return (false); > > > } > > > > if (Object.ReferenceEquals(this, obj) == true) > > > { > > > return (true); > > > } > > > > M other = obj as M; > > > > return (this.Id == other.Id); > > > } > > > } > > > > } > > > > Here is the code that causes the exception: > > > > IList<M> listM = session.CreateCriteria<M>().List<M>(); > > > IList<O> listO = session.CreateCriteria<O>().List<O>(); <-- here > > > > The actual exception is: > > > > GenericAdoException: "could not delete collection: > > > [NHibernateTest.M.RecentO#2][SQL: UPDATE [O] SET [MID] = null WHERE > > > [MID] = @p0 AND ((Date >= (GetDate() - 30)))]" > > > InnerException: {"Cannot insert the value NULL into column 'MID', > > > table 'NHibernateTest.dbo.O'; column does not allow nulls. UPDATE > > > fails.\r\nThe statement has been terminated."} > > > > Indeed column MID is NOT NULL, but I don't know why NHibernate is > > > trying to persist my entities, I have explicitly marked the query-only > > > property as mutable="false" and optimistic-lock="false". > > > > Any clues? > > > > Thanks, > > > > Ricardo Peres --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "nhusers" group. To post to this group, send email to nhusers@googlegroups.com To unsubscribe from this group, send email to nhusers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/nhusers?hl=en -~----------~----~----~----~------~----~------~--~---