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

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);
    貌似就会只删除中间表的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 有没有帮写代码做实验仿真的
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥30 vmware exsi重置后登不上
  • ¥15 易盾点选的cb参数怎么解啊
  • ¥15 MATLAB运行显示错误,如何解决?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题