wang2222 2009-11-24 15:16 采纳率: 0%
浏览 268
已采纳

java级联时删除对象

有两个对象
user <------>role
一个role对应多个user

role对象
@OneToMany(cascade = {CascadeType.ALL})
@Fetch(FetchMode.JOIN)
@JoinColumn(name = "roleId")
private Set userSet;

private Long id;
...略


user对象
private Long id;
private Long roleId;
....略

怎么删除一个user时不影响role得内容
望解答。
[b]问题补充:[/b]
但我删除时还是报错的
:deleted entity passed to persist
不知道怎么回事

  • 写回答

3条回答 默认 最新

  • jiangwenbo456 2009-11-24 19:19
    关注

    你的级联属性 为什么要设置all?
    cascade="all" 表示级联 插入 和 删除
    如果是all的话当然会把你的主表级联删除了
    应当配置为:
    cascade="save-update" 只级联插入和修改

    在一对多 或者 多对多 还有 一对一弱耦合
    这三种关系种 cascade最好都设置成为 save-update
    一般是很少设置成为all的
    除非是一对一的强耦合 就是共享主键的方式

    如果明白了上面所说的

    给你点小窍门

    在做删除操作的时候(cascade="save-update"的情况下)
    删除子表时候可以随便删除
    但是在删除主表的时候 如果在hbm.xml中 主表信息里提供了明确的子表外键信息 那么就可以删除 如果没有提供 需要手动在删除操作前把关系解除掉
    基于这两点 删除就没有问题了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题