What you have to do is set default-cascade="save-update, persist" at the top of each mapping. I don't like it at all but you know what you need.
On Thu, Sep 30, 2010 at 6:26 AM, alexey_baranov <[email protected]> wrote: > I'm not sure understand what you ask, But I'l try > > We have a code where Obj inherited classes (Request, Person, Client, > Network....) returns like base Obj type (Everything is Obj in out > solution/ Like in AD, LDAP or other catalog) > > And we have many many views for each entity type. Like > NetworkEquipmentView, ClientView, FolderView, PersonView, .... > > class ObjView: UserControl{ > Obj Model(){ > set <...} > get { > ... > return _model; > } > } > } > > Now imagine user click "Save" button. We get Obj refference to View's > model (but we do not know what type exactly) and need to save it. > > var model= SomeView.Model; //hire we have any Obj for example Person. > Sometimes it refference to new Entity. Mayby it refference to > transient Parent, mayby it refference to transient Attachment, mayby > model is not a Peston but File at all > session.Save(model); //and hire we want to save all unsaved > refferenced entities before saving model. But have Exception "unable > to save entity, save unsaved referenced entity first" > > what we have to do hire is to check model type and then chek is > refference properties transient or not like this > > if (model is Folder){ > if (model have unsaved attachments){ > save unsaved attachments > } > } > else if (model is Request){ > if (model have unsaved initier){ > save initier > } > if (model have unsaved doers){ > save unsaved doers > } > if (model have unsave .....) > } > else if (.... > ..... > } > esle if > else if > ..... > .... > } > > We have many other places where we got returned polimorphoc entity > like base class Obj > Hope you understand me > > Thanks! > > <?xml version="1.0" encoding="utf-8" ?> > <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" > assembly="Helpdesk" namespace="Helpdesk"> > <class name="Obj" discriminator-value="9"> > <id name="Id"> > <generator class="native" /> > </id> > <discriminator column="Typee" type="Int32"/> > <timestamp name="Modifed"/> > <property name="Path" access="nosetter.camelcase-underscore" not- > null="true"/> > <property name="Name" column="Namee" not-null="true"/> > <property name ="IsFolder" access="nosetter.camelcase-underscore"/ > > > <property name="Note"/> > <property name="Created" not-null="true"/> > <many-to-one name="Owner" column ="Ownerr" /> > <many-to-one name ="Parent" access="nosetter.camelcase-underscore"/ > > > <set name="Children" inverse="true"> > <key column="Parent"/> > <one-to-many class="Obj"/> > </set> > <set name="Attachments" table="Obj_Attachments" cascade="save- > update"> > <key column="Obj"/> > <many-to-many column="Attachment" class="Filee"/> > </set> > </class> > </hibernate-mapping> > > <?xml version="1.0" encoding="utf-8" ?> > <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" > assembly="Helpdesk" namespace="Helpdesk"> > <subclass name="Folder" extends ="Obj" discriminator-value="42"> > <!--<join table="Folder"> > <key column="Id"/> > </join>--> > </subclass> > </hibernate-mapping> > > <?xml version="1.0" encoding="utf-8" ?> > <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" > assembly="Helpdesk" namespace="Helpdesk"> > <subclass name="Request" extends ="Obj" discriminator-value="41"> > <!--<join table="Request"> > <key column="Id"/>--> > <property name="Text" column="Textt"/> > <property name="Deadline"/> > <property name="Closed"/> > <property name="CallbackOn"/> > <many-to-one name ="Initier" fetch="join"/> > <list name="Doers" table="Request_Doers"> > <key column="Request"/> > <index column="i"/> > <many-to-many column="Doer" class="Department"/> > </list> > <!--</join>--> > </subclass> > </hibernate-mapping> > > <?xml version="1.0" encoding="utf-8" ?> > <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" > assembly="Helpdesk" namespace="Helpdesk"> > <subclass name="Note" extends ="Obj" discriminator-value="63"> > <!--<join table="Note"> > <key column="Id"/>--> > <property name="Text" column="Textt"/> > <!--</join>--> > </subclass> > </hibernate-mapping> > > .... > ... > ... > ... > > > On Sep 29, 4:15 pm, Fabio Maulo <[email protected]> wrote: > > A little graph with your mapping. > > > > > > > > On Wed, Sep 29, 2010 at 5:20 AM, alexey_baranov <[email protected]> > wrote: > > > I'm not shure understand you. What is this "save-update, persist" ? Is > > > it existed feature or just the abbreviation for our wish? I have never > > > see "persist". We do not need cascade "save-update, persist", just > > > "persist". > > > > > I can share any mapping information you need. This is not a big > > > seecret. What does exactly you ask? Mapping files? code listing or > > > litle example? > > > > > Thanks! > > > > > On Sep 29, 3:30 am, Fabio Maulo <[email protected]> wrote: > > > > I would say that what you are looking for is > > > default-cascade="save-update, > > > > persist" but I would be sure. > > > > > > If the question will not sound "rude" (today was again another of > those > > > day, > > > > in public and privately), > > > > > > can you show us an example ? > > > > > > A little graph with your mapping. > > > > > > On Tue, Sep 28, 2010 at 1:11 PM, alexey_baranov <[email protected]> > > > wrote: > > > > > Hi! > > > > > > > We have to implement new method SaveGraph(), wich will be like > > > > > original ISession.Save() except automatic saving refferenced > transient > > > > > entities insted throwin exception.We need this feature in many > cases > > > > > when working with polimorphic entities and do not know exactly what > > > > > type is used. We ask more experienced users and developers voice is > it > > > > > feasible work. > > > > > > > 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]<nhusers%[email protected]> > <nhusers%[email protected]<nhusers%[email protected]> > > > > > <nhusers%[email protected]<nhusers%[email protected]> > <nhusers%[email protected]<nhusers%[email protected]> > > > > > > > > > . > > > > > For more options, visit this group at > > > > >http://groups.google.com/group/nhusers?hl=en. > > > > > > -- > > > > Fabio Maulo > > > > > -- > > > 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]<nhusers%[email protected]> > <nhusers%[email protected]<nhusers%[email protected]> > > > > > . > > > For more options, visit this group at > > >http://groups.google.com/group/nhusers?hl=en. > > > > -- > > Fabio Maulo > > -- > 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]<nhusers%[email protected]> > . > For more options, visit this group at > http://groups.google.com/group/nhusers?hl=en. > > -- Fabio Maulo -- 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.
