Я пытаюсь обновить @ManyToMany связь, но она очищается вместо ...JPA @ManyToMany только с одной стороны?
Мой класс проекта выглядит следующим образом:
@Entity
public class Project {
...
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinTable(name = "PROJECT_USER",
joinColumns = @JoinColumn(name = "PROJECT_ID", referencedColumnName = "ID"),
inverseJoinColumns = @JoinColumn(name = "USER_ID", referencedColumnName = "ID"))
private Collection<User> users;
...
}
Но у меня нет - и я не хочу - сбор проектов в объекте пользователя.
Когда я смотрю на сгенерированные таблицы базы данных, они выглядят хорошо. Они содержат все столбцы и ограничения (первичные/внешние ключи).
Но когда я сохраняю проект, у которого есть список пользователей (и пользователи все еще находятся в базе данных), таблица сопоставления не обновляется обновляется, но когда я обновляю проект после этого, список Пользователи очищаются.
Для лучшего понимания:
Project project = ...; // new project with users that are available in the db
System.out.println(project getUsers().size()); // prints 5
em.persist(project);
System.out.println(project getUsers().size()); // prints 5
em.refresh(project);
System.out.println(project getUsers().size()); // prints 0
Итак, как я могу обновить отношения между Пользователем и проекта?
... спасибо em.flush () сделал трюк! –
Любопытно, какова функциональность, которую вы пытаетесь достичь? Экспериментировать с этим - интересное научное исследование того, как работает ORM, но я не знаю, почему вы на самом деле хотите это сделать. – Affe
для UnitTesting ... –