У меня есть 2 класса:
@Entity
public class Student extends User {
...
@ManyToMany(mappedBy = "members", fetch = FetchType.EAGER)
private Set<Group> groups;
...
public void addGroup(Group group) {
groups.add(group);
}
}
@Entity
@Table(name = "Group")
public class Group implements Serializable {
...
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "member_of")
private Set<Student> members;
...
public void addMember(Student student) {
members.add(student);
}
}
Это сессионный компонент, который управляет их отношениями:
@Stateless
public class StudentManager extends AcademicManager implements StudentManagerRemote {
...
@Override
public void requestAnswer(long requestID, RequestAnswer answer) {
Request request = entityManager.find(Request.class, requestID);
if(answer == RequestAnswer.YES) {
Student student = request.getStudent();
Group group = request.getGroup();
group.addMember(student);
student.addGroup(group);
entityManager.flush();
entityManager.clear();
}
}
...
}
Не обновляет БД. Зачем? Я делаю то же самое для других отношений, но это единственный вариант ManyToMany, который у меня есть.
Я также пытался с запросом, но не работал.
РЕДАКТИРОВАТЬ: Я отредактировал код, как предложил Mr.J4mes, но он по-прежнему не работает.
Более того: почему .flush () и .clear () не нужны?