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
--~--~---------~--~----~------------~-------~--~----~
Para escribir al Grupo, hágalo a esta dirección:
[email protected]
Para más, visite: http://groups-beta.google.com/group/NHibernate-Hispano
-~----------~----~----~----~------~----~------~--~---