priverb
2009-03-30 11:21
浏览 214
已采纳

Hibernate Annotation @ManyToMany cascade 的配置问题

我有两张表 通过一个中间表关联 可是我在删除一张表数据的时候却将两张表的所有数据都删除了
想问一下如何设置才能只删除中间表的数据
下面是两个POJO的配置信息

其中一个ManyToMany的配置
@ManyToMany(cascade = CascadeType.REMOVE, fetch = FetchType.LAZY)
@JoinTable(name = "user_role", catalog = "demo", joinColumns = { @JoinColumn(name = "userId", updatable = false) }, inverseJoinColumns = { @JoinColumn(name = "roleId", updatable = false) })
public Set getRoles() {
return this.roles;
}

public void setRoles(Set<Role> roles) {
    this.roles = roles;
}

另一个ManyToMany的配置

@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinTable(name = "user_role", catalog = "demo", joinColumns = { @JoinColumn(name = "roleId", updatable = false) }, inverseJoinColumns = { @JoinColumn(name = "userId", updatable = false) })
public Set<User> getUsers() {
    return this.users;
}

public void setUsers(Set<User> users) {
    this.users = users;
}

困惑了好几天了。。哪位朋友明白帮忙看下。谢谢了

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • iteye_6949 2009-03-30 11:30
    已采纳

    如果没记错的话,不需要显示的删除,
    应该只需要断开两个表的关系,hibernate会自动清除中间表的数据
    user.setRoles(null);
    貌似就会只删除中间表的

    点赞 打赏 评论

相关推荐 更多相似问题