J'ai une classe d'entité Foo foo
qui contient Collection<Bar> bars
. J'ai essayé plusieurs méthodes, mais je n'arrive pas à mettre à jour ma collection avec succès.Problème lors de la mise à jour de la collecte à l'aide de JPA
Une tentative:
foo = em.find(key);
foo.getBars().clear();
foo.setBars(bars);
em.flush; \\ commit, etc.
Cette nouvelle collection ajoute la à l'ancienne.
Une autre tentative:
foo = em.find(key);
bars = foo.getBars();
for (Bar bar : bars) {
em.remove(bar);
}
em.flush;
À ce stade, je pensais que je pourrais ajouter la nouvelle collection, mais je trouve que la foo entité a été effacé.
Voici quelques annotations. Dans Foo:
@OneToMany(cascade = { CascadeType.ALL }, mappedBy = "foo")
private List<Bar> bars;
In Bar:
@ManyToOne(optional = false, cascade = { CascadeType.ALL })
@JoinColumn(name = "FOO_ID")
private Foo foo;
Quelqu'un at-il eu du mal avec cela? Des idées?
Lorsque je tente, je reçois: 'javax.persistence.EntityNotFoundException: entité supprimée passé à persist: [com.Bar #]' –
@FarmBoy. Vous devriez appeler 'aussi foo.getBars() clair () 'après avoir enlevé' Bar's. – axtavt
Cela fonctionne maintenant, merci beaucoup. –