У меня есть класс объектов Foo foo
, который содержит Collection<Bar> bars
. Я пробовал разные способы, но я не смог успешно обновить свою коллекцию.Обновление проблемы с использованием JPA
одна попытка:
foo = em.find(key);
foo.getBars().clear();
foo.setBars(bars);
em.flush; \\ commit, etc.
Это добавляет новую коллекцию к старому.
Еще одна попытка:
foo = em.find(key);
bars = foo.getBars();
for (Bar bar : bars) {
em.remove(bar);
}
em.flush;
На данный момент, я думал, что я мог бы добавить новую коллекцию, но я считаю, что объект Foo был уничтожен.
Вот несколько аннотаций. В Foo:
@OneToMany(cascade = { CascadeType.ALL }, mappedBy = "foo")
private List<Bar> bars;
В баре:
@ManyToOne(optional = false, cascade = { CascadeType.ALL })
@JoinColumn(name = "FOO_ID")
private Foo foo;
Кто-нибудь еще были проблемы с этим? Есть идеи?
Когда я пытаюсь это, я получаю: 'javax.persistence.EntityNotFoundException: удаленный объект передается сохраняются: [com.Bar #]' –
@FarmBoy:. Вы также должны вызвать 'foo.getBars() ясно () 'после удаления' Bar'. – axtavt
Теперь он работает, спасибо большое. –