Respondo ràpido:
estás queriendo guardar el hijo, pero no tenes guardado el padre.
Estás haciendo
myOrderItem.Order = myOrder;
Save(myOrderItem);
Antes tendrías que hacer Save(myOrder);
Save(myOrder);
myOrderItem.Order = myOrder;
Save(myOrderItem);
fijate si es eso.
On 2/3/07, Chili <[EMAIL PROTECTED]> wrote:
>
> Hola a todos,
>
> Os presento un nuevo problema. Estoy intentando salvar un nuevo objeto
> a mi base de datos. El problema es que es un objeto "hijo", q va
> dentro de otro objeto padre. Es decir, la estrucura sería así:
>
> DatosPersonalesDA tiene una colección de objetos IdentDA, y éste a su
> vez tiene una many-to-one a un objeto de tipo IdentNameDA.
>
> Os pongo la parte de los mapping relevantes de estos tres archivos.
>
> <?xml version="1.0" encoding="utf-8" ?>
> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.0" default-
> lazy="false">
> <class
> name="dataAccess.csfiles.datospersonalesygrupo.DatosPersonalesDA,
> dataAccess" table="datospersonales">
> <id name="IdPersonales" column="idpersonales">
> <generator class="assigned" />
> </id>
> <bag name="Idents" table="idents">
> <key column="idpersonales" />
> <composite-element
> class="dataAccess.csfiles.datospersonalesygrupo.IdentsDA, dataAccess">
> <property name="Number" column="number" type="String"/>
> <property name="Place" column="place" type="String"/>
> <property name="Date" column="date"/>
> <many-to-one name="Name" cascade="save-update"
> class="dataAccess.csfiles.datospersonalesygrupo.IdentNameDA,
> dataAccess"
> column="idname"/>
> </composite-element>
> </bag>
> </class>
> </hibernate-mapping>
>
>
> <?xml version="1.0" encoding="utf-8" ?>
> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.0" default-
> lazy="false">
> <class name="dataAccess.csfiles.datospersonalesygrupo.IdentNameDA,
> dataAccess" table="identname">
> <id name="IdName" column="idname" type="Int32" unsaved-value="0">
> <generator class="identity" />
> </id>
> <property name="Name" column="name" type="String"/>
> </class>
> </hibernate-mapping>
>
>
> Ahora os pongo los cs:
>
> namespace dataAccess.csfiles.datospersonalesygrupo
> {
> public class DatosPersonalesDA
> {
> private int idPersonales;
> private IList<IdentsDA> idents;
> }
> }
>
> namespace dataAccess.csfiles.datospersonalesygrupo
> {
> public class IdentsDA
> {
> private string place, number;
> private DateTime date;
> private IdentNameDA name;
> }
> }
>
> namespace dataAccess.csfiles.datospersonalesygrupo
> {
> public class IdentNameDA
> {
> private int idname;
> private string name;
> }
> }
>
> Al borrar un determinado objeto IdentDA o modificar uno ya existente
> no tengo ningún problema, pero al borrarlo y actualizar la clase padre
> me casca aquí:
>
> try
> {
> transaction = session.BeginTransaction();
> session.SaveOrUpdate(member);
> transaction.Commit();
> session.Disconnect();
> }
>
>
> object references an unsaved transient instance - save the transient
> instance before flushing:
> dataAccess.csfiles.datospersonalesygrupo.IdentNameDA
> Description: An unhandled exception occurred during the execution of
> the current web request. Please review the stack trace for more
> information about the error and where it originated in the code.
>
> Exception Details: NHibernate.TransientObjectException: object
> references an unsaved transient instance - save the transient instance
> before flushing: dataAccess.csfiles.datospersonalesygrupo.IdentNameDA
>
> Stack Trace:
>
> [TransientObjectException: object references an unsaved transient
> instance - save the transient instance before flushing:
> dataAccess.csfiles.datospersonalesygrupo.IdentNameDA]
> dataAccess.csfiles.DBManager.saveMember(MemberDA member) in C:
> \Documents and Settings\César Díaz García\Mis documentos\Visual Studio
> 2005\Projects\dataAccess\dataAccess\DBManager.cs:97
> Controlador.saveMember(MemberDA member) in c:\Documents and Settings
> \César Díaz García\Mis documentos\Visual Studio 2005\WebSites\proyecto
> \App_Code\Controlador.cs:58
> web_privado_perfil_modificar.ButtonGuardar_Click(Object sender,
> EventArgs e) in c:\Documents and Settings\César Díaz García\Mis
> documentos\Visual Studio 2005\WebSites\proyecto\web\privado
> \perfil_modificar.aspx.cs:104
> System.Web.UI.WebControls.Button.OnClick(EventArgs e) +96
> System.Web.UI.WebControls.Button.RaisePostBackEvent(String
> eventArgument) +116
>
> System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String
> eventArgument) +31
> System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler
> sourceControl, String eventArgument) +32
> System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
> +72
> System.Web.UI.Page.ProcessRequestMain(Boolean
> includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
> +3834
>
>
> >
>
--
Dario Quintana
http://blog.darioquintana.com.ar
--~--~---------~--~----~------------~-------~--~----~
Para escribir al Grupo, hágalo a esta dirección:
[email protected]
Para más, visite: http://groups-beta.google.com/group/NHibernate-Hispano
-~----------~----~----~----~------~----~------~--~---