Удаление объектов в ассоциации «многие ко многим» с Hibernate и Java - PullRequest
4 голосов
/ 22 марта 2012

Я искал несколько дней, но не могу найти ответ.

Учитывая это много ко многим (сотрудник / встреча)

@Entity
@Table(name="EMPLOYEE")
public class Employee {

    @Id
    @Column(name="EMPLOYEE_ID")
    @GeneratedValue
    private Long employeeId;

    @ManyToMany(cascade = {CascadeType.ALL})
    @JoinTable(name="EMPLOYEE_MEETING",
                joinColumns={@JoinColumn(name="EMPLOYEE_ID")},
                inverseJoinColumns={@JoinColumn(name="MEETING_ID")})
    private Set<Meeting> meetings = new HashSet<Meeting>();
}

@Entity
@Table(name="MEETING")
public class Meeting {

    @Id
    @Column(name="MEETING_ID")
    @GeneratedValue
    private Long meetingId;

    @ManyToMany(mappedBy="meetings")
    private Set<Employee> employees = new HashSet<Employee>();
}

Я могу добавить сотрудников на собрание, и это отображается в таблице employee_meeting.

Когда я получаю объект собрания и удаляю его, он также исчезает из таблицы соединений, но остается в наборе сотрудников ... Это ожидаемое поведение?

Вот как я могу удалить объект собрания

session.delete(meeting);
transaction.commit();

На данный момент он исчез из таблицы.

Спасибо!

1 Ответ

1 голос
/ 22 марта 2012

Да, это правильное поведение.Если у вас есть отношение «многие ко многим», то вам нужно удалить его вручную.Перейдите по этой ссылке для стратегии отображения коллекции hibernate

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...