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 AT89C51控制8位八段数码管显示时钟。
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口