Si verificano problemi durante la rimozione di un elemento da un elenco. L'elenco è definito in una superclasse, ma le annotazioni Hibernate sono applicate agli accessor di proprietà in una sottoclasse. Ci sono due metodi nella superclasse che manipolano la lista. Il metodo "aggiungi" funziona bene, ma la "rimozione" non mantiene i cambiamenti. Ho controllato le mie impostazioni Cascade e mi sembra di avere le cose corrette. Sto facendo qualcosa che è impossibile. In caso contrario, sto facendo qualcosa in modo errato?Ibernazione: la rimozione di un elemento da un elenco non persiste
Qui sono i miei corsi:.
@Entity
abstract class Temporal<T> {
@Id
@GeneratedValue
private Long id;
@Version
private Integer version = null;
@Transient
protected List<T> content = new ArrayList<T>();
public void remove(T value) {
// business logic ...
content.remove(value);
}
public void add(T value) {
// business logic ...
content.add(value);
}
}
@Entity
@AccessType("property")
class TemporalAsset extends Temporal<Asset> {
@OneToMany(cascade = CascadeType.ALL, mappedBy = "temporal")
public List<Asset> getContent() {
return super.content;
}
protected void setContent(List<Asset> list) {
super.content = list;
}
}
Io uso un'istanza della classe TemporalAsset come segue (nota che sto utilizzare solo il metodo di "refresh" per dimostrare il comportamento L'elenco non persistono correttamente anche se chiudo o chiudo la sessione e apro una nuova sessione):
temporalAsset.add(value1);
temporalAsset.getContent().size() == 1; // true
session.update(temporalAsset);
session.refresh(temporalAsset);
temporalAsset.getContent().size() == 1; // true
temporalAsset.remove(value1);
temporalAsset.getContent().size() == 0; // true
session.update(temporalAsset);
session.refresh(temporalAsset);
temporalAsset.getContent().size() == 0; // false, its 1
Grazie.
E 'stato! grazie mille – codefinger
CascadeType.DELETE_ORPHAN è deprecato. C'è un'alternativa? –
usa @OneToOne (orphanRemoval = true) o @OneToMany (orphanRemoval = true) secondo http://docs.jboss.org/hibernate/orm/3.5/api/org/hibernate/annotations/CascadeType.html – FoxyBOA