Sto riscontrando problemi nella rimozione di un'altra entità attraverso la cascata delete-orphan Funziona quando cancello la raccolta di serie associata, ma non quando effettuo la raccolta dell'insieme Null. Lasciami spiegare in dettaglio. Il frammento di configurazione:rimuovere la raccolta con delete-orphan non funziona con assegnazione nulla? :(
<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>
mio codice di esempio:
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.
le seguenti opere in modo corretto, vale a dire: tutti gli elementi della raccolta sono tutti spostati dal db
. 10cats.getBla().clear();
cats.saveOrUpdate();
Penso che questo funzioni come PersistSet di Hibernate è contrassegnato come dirty quando si chiama questo metodo.
Quanto segue tuttavia non funziona come sopra come vorrei/aspetterei.
cats.setBla(null);
cats.saveOrUpdate();
Se ricarico la voce gatti dal db, che contiene ancora gli elementi BLA e nessuna dichiarazione di cancellazione è generato da Hibernate :(.. Perché no ?? ... o si tratta di un bug? I sto usando 3.6.0.Final.
questa domanda espone alcune questioni complicate in ibernazione. +1. – hvgotcodes