Ho due tabelle con l'associazione many-to-many.Hibernate: elimina l'associazione many-to-many
- DB frammento:
carichi
Id
Nome
sessioni
Id
Data
sessionsloads
LoadId
SessionId
- Sospensione frammenti di mappatura:
/* loads.hbm.xml */
<set name="sessions" table="sessionsloads" inverse="true">
<key column="LoadId" />
<many-to-many column="SessionId" class="Session" />
</set>
…
/* sessions.hbm.xml */
<set name="loads" table="sessionsloads">
<key column="SessionId" />
<many-to-many column="LoadId" class="Load" />
</set>
Al fine di rimuovere una voce dalla tabella di associazione sessionsloads, eseguo questo codice:
Session session = sessionDao.getObject(sessionId);
Load load = loadDao.getObject(loadId);
load.getSessions().remove(session);
loadDao.saveObject(load);
Ma, dopo il lancio, questo codice non cambia nulla.
Qual è il modo giusto per rimuovere un'associazione?
Grazie, ci ho provato, ma non funziona. Hibernate perfino non scrive alcuna query 'delete' nel log. – 0x2D9A3
@Bar Ci deve essere un altro problema da qualche parte, perché funziona sicuramente. Proverò a riprodurre in seguito con la mappatura, ma so che sta funzionando. –
Come hai detto, 'cascade' non funziona in questo caso, giusto? Inoltre, la gente dice che può funzionare con 'session.flush()'. Ma cosa posso fare se uso 'getHibenateTemplate'? – 0x2D9A3