我想用 JPA Annotations 定义我的 @ManyToMany 关系,以便在更新实体时不会删除关系。
@ManyToMany(targetEntity=Event.class, cascade={CascadeType.ALL}, fetch = FetchType.LAZY)
@JoinTable(
name = "event_user",
joinColumns = @JoinColumn(name = "user_id"),
inverseJoinColumns = @JoinColumn(name = "event_id")
)
private Set<Event> events;
和事件类
@ManyToMany(cascade = {CascadeType.ALL}, mappedBy="events", targetEntity=User.class, fetch = FetchType.LAZY)
private Set<User> attending;
我认为设置 CascadeType.REMOVE 不会在更新时触发删除,但是当我对用户对象调用 update 时,它的所有相关事件都会被删除。
这是来自我的 DAO
@Override
public User update(User entity) {
sessionFactory.getCurrentSession().update(entity);
return entity;
}
当我对我的实体调用更新时,Hibernate 会:
Hibernate: delete from event_user where user_id=?