我一直在寻找几天,但似乎无法找到答案。
鉴于这种多对多(员工/ session )
@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>();
}
我可以将员工添加到 session 中,它会显示在 employee_meeting 表中。
当我确实得到一个 session 对象并将其删除时,它也从联接表中消失了,但保留在员工集中......这是预期的行为吗?
这是我删除 session 对象的方法
session.delete(meeting);
transaction.commit();
此时它已经从 table 上消失了。
谢谢!
最佳答案
是的,这是正确的行为。如果您有多对多关系,则需要手动删除它。请参阅此链接以获取 hibernate collection mapping strategy