Tengo problemas para eliminar otra entidad mediante la eliminación de huérfanos en cascada. Funciona cuando borro la colección de conjuntos asociados, pero no cuando hago que la colección de conjuntos sea nula Déjenme explicar detalladamente El fragmento de configuración:eliminar colección con delete-huérfano no funciona con asignación nula? :(
<class name="com.sample.CategoriesDefault" table="cats">
<id name="id" column="id" type="string" length="40" access="property">
<generator class="assigned" />
</id>
<version name="version" column="objVrs" unsaved-value="negative"/>
<set name="bla" lazy="false" cascade="all-delete-orphan" inverse="true">
<key column="idCats" not-null="true"/>
<one-to-many class="com.sample.BLA"/>
</set>
<class name="com.sample.BLA" table="blaTEST">
<id name="id" column="id" type="string" length="40" access="property">
<generator class="assigned" />
</id>
<version name="version" column="objVrs" unsaved-value="negative"/>
<property name="bla" type="string" column="bla"/>
<many-to-one name="parent" class="com.sample.CategoriesDefault" column="idCats" not-null="true"/>
</class>
Mi código de ejemplo:
Categories cats = new CategoriesDefault();
final Set<BLA> col = new HashSet<BLA>();
col.add(new BLA(cats));
cats.setBla(col);
cats.saveOrupdate(); // will update/insert it in the db.
las siguientes obras correctamente, es decir: todos los elementos de la colección están movidos desde la db
. 10cats.getBla().clear();
cats.saveOrUpdate();
Creo que esto funciona porque el PersistSet de Hibernate está marcado como sucio al llamar a este método.
Lo siguiente, sin embargo, no funciona igual que el anterior como me gustaría/esperaba.
cats.setBla(null);
cats.saveOrUpdate();
Si vuelvo a cargar el elemento gatos de la db, todavía contiene los artículos BLA y ninguna instrucción de eliminación es generado por Hibernate :(.. Por qué no ?? ... o se trata de un error? I estoy usando 3.6.0.Final.
esta pregunta expone algunos problemas complicados en hibernación. +1. – hvgotcodes