有两个对象
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
不知道怎么回事
你的级联属性 为什么要设置all?
cascade="all" 表示级联 插入 和 删除
如果是all的话当然会把你的主表级联删除了
应当配置为:
cascade="save-update" 只级联插入和修改
在一对多 或者 多对多 还有 一对一弱耦合
这三种关系种 cascade最好都设置成为 save-update
一般是很少设置成为all的
除非是一对一的强耦合 就是共享主键的方式
如果明白了上面所说的
给你点小窍门
在做删除操作的时候(cascade="save-update"的情况下)
删除子表时候可以随便删除
但是在删除主表的时候 如果在hbm.xml中 主表信息里提供了明确的子表外键信息 那么就可以删除 如果没有提供 需要手动在删除操作前把关系解除掉
基于这两点 删除就没有问题了
User中的cascade属性设置为save-or-update或none,在删除User对象时就不会影响到Role对象.
你应该把 关系配在user这边,配置一个many-to-one 然后cascade设置为none