Ho un'applicazione che carica oggetti tramite sospensione e quindi li passa a un altro livello come oggetti distaccati. Qualsiasi modifica a tali oggetti viene rinviata al livello di sospensione dove io chiamo saveOrUpdate()
su quegli oggetti.Hibernate salva il metodoOrUpdate elimina i bambini?
Sospende l'eliminazione di oggetti figlio di relazione uno-a-molti contenuti in una raccolta negli oggetti passati in saveOrUpdate()
se rimuovo semplicemente l'oggetto figlio dalla raccolta prima di chiamare saveOrUpdate()
?
In caso contrario, in che modo questo in genere viene eseguito in un'applicazione di sospensione che utilizza oggetti distaccati?
Questo ha senso. Tuttavia, quando imposto CascadeType.ALL, orphanRemoval = true sulla raccolta, l'oggetto figlio non viene ancora eliminato. Ciò potrebbe essere dovuto al fatto che sto utilizzando un'annotazione JoinColumn in combinazione con l'annotazione OneToMany? – Tom
@ Tom: Probabilmente no, no, '@ JoinColumn' è appena usato per sovrascrivere il nome della colonna di join predefinito. Sembra che Hibernate non pensi che sia un orfano. Sei sicuro che qualche altra entità non abbia un riferimento a quel bambino? – skaffman
Non è sicuramente referenziato da un'altra entità. La relazione db sottostante è in realtà un ManyToMany, tuttavia, e sto usando OneToMany con JoinColumn per rendere il modello più semplice. Forse lo sta lanciando? Altrimenti ho anche notato che alcune entità figlio del bambino contengono relazioni ManyToOne che non possono avere l'attributo orphanRemoval impostato su di esse. Forse questo sta impedendo la cancellazione del genitore in qualche modo. – Tom