Bueno agregue lo que me indicaste la relacion (one-to-many) y agregar
cascade =
"all-delete-orphan" me quedo asi:
La Tabla Hijo:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
namespace="PDVSA.Negocio.Entidades.Comunes"
assembly="Entidades.Comunes"
default-lazy="true">
<class name="PDVSA.Negocio.Entidades.Comunes.rEsquemaStandoff"
table="T_rEsquemaStandoff">
<meta attribute="extends">PDVSA.Business.Entities.Core.AbstractEntity</
meta>
<meta attribute="addtional-soucecode">
</meta>
<id name="ID" column="PK_CodigoEsquemaStandoff" type="String"
length="32" unsaved-value="0">
<meta attribute="field-browsable">false</meta>
<meta attribute="field-readonly">true</meta>
<meta attribute="field-category">GeneralCategory</meta>
<meta attribute="field-propertysort">1</meta>
<generator class="uuid.hex"/>
</id>
<many-to-one name="FK_CodigoEscenario"
class="PDVSA.Negocio.Entidades.Proyecto.pEscenario,
Entidades.Proyecto" foreign-key="FK_CodigoEscenario"
column="FK_CodigoEscenario" cascade="delete">
</many-to-one>
<property name="ProfundidadStandoff" column="ProfundidadStandoff"
type="double">
</property>
<property name="Standoff" column="Standoff" type="double">
</property>
</class>
</hibernate-mapping>
La Tabla Padre:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
namespace="PDVSA.Negocio.Entidades.Proyecto"
assembly="Entidades.Proyecto"
default-lazy="true">
<class name="PDVSA.Negocio.Entidades.Proyecto.pEscenario,
Entidades.Proyecto" table="T_pEscenario">
<meta
attribute="extends">PDVSA.Business.Entities.Core.AbstractEntity</meta>
<meta attribute="default-property-tostring">ID</meta>
<meta attribute="field-browsable">false</meta>
<meta attribute="field-readonly">true</meta>
<id name="ID" column="FK_CodigoEscenario" type="String"
length="32" unsaved-value="0">
<generator class="foreign">
<param name="property">FK_CodigoEscenario</param>
</generator>
</id>
<one-to-one name="FK_CodigoEscenario"
class="PDVSA.Negocio.Entidades.Proyecto.dProyectoEscenario,
Entidades.Proyecto" foreign-key="PK_CodigoProyectoEscenario">
</one-to-one>
<set name="EsquemaStandoff" table="T_rEsquemaStandoff"
cascade="all-delete-orphan">
<key column="FK_CodigoEscenario"/>
<one-to-many
class="PDVSA.Negocio.Entidades.Comunes.rEsquemaStandoff,
Entidades.Comunes"/>
</set>
<property name="DescripcionEscenario"
column="DescripcionEscenario" type="String" length="1024">
</property>
</class>
</hibernate-mapping>
Pero aun me sigue dando el mismo problema:
a. En este caso, (como muestro mis entidades arriba) si elimino el
hijo (EsquemaStandoff) me esta borrando tambien el padre (Escenario) y
no quiero que esto pase.
b. Probe quitando el cascade="delete" del many-to-one de la tabla hijo
(EsquemaStandoff) y entonces al momento de eliminar el padre y existir
un hijo me esta dando el problema de que no puede eliminar el padre
porque existe un hijo.
{NHibernate.Exceptions.GenericADOException: could not delete:
[PDVSA.Negocio.Entidades.Proyecto.pEscenario#33dc6e7f191f462a882c889071ac64eb]
[SQL: DELETE FROM public.T_pEscenario WHERE FK_CodigoEscenario = ?]
Npgsql.NpgsqlException: update or delete on table "t_pescenario"
violates foreign key constraint "fk_codigoescenario" on table
"t_resquemastandoff"
Si alguien me puede ayudar con este problema se lo agradezco, que me
indique si estoy haciendo las cosas mal, ya he probado de todas las
formas y no se como hacerlo.
O sera que a juro yo tengo que hacer la implementacion para que
hibernate borre los hijos antes que los padres?
--
Para escribir al Grupo, hágalo a esta dirección:
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano