Buenos Dias:
Por favor alguien que me ayude a este problema.
Tengo un problema al eliminar los datos de una tabla hijo relacionada
con la tabla padre, si borro los elementos de la tabla hijo, me están
borrando también los elementos de la tabla padre. El esquema es el
siguiente:
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>
a. En este caso, (como muestro mis entidades arriba) si elimino el
hijo (EsquemaStandoff) me esta borrando también 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"
Ya he probado de todas las formas y no se como borrar de la forma en
que deseo:
Desearía que al borrar el Escenario me borre todos sus EsquemaStandoff
asociados y que si borro un EsquemaStandoff no me borre el Escenario.
Si alguien me puede ayudar con este problema se lo agradezco, que me
indique si estoy haciendo las cosas mal.
O será que a juro yo tengo que hacer la implementación 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