cascade在java_java – 带有cascade的@ManyToMany = CascadeType.REM...

我有2个实体:Group和Grouped,有1个ManyToMany关联.

在数据库中,Association表在Group和Grouped上都有一个NOT NULL FK.

我希望Hibernate在删除所有分组时删除关联,但不删除组.

删除Grouped实体的代码:

@Autowired

private final GroupedRepository groupedRepository;

public void delete(Grouped groupedToRemove) {

groupedRepository.delete(groupedToRemove);

}

如果我设置cascade = CascadeType.ALL或cascade = CascadeType.REMOVE,当我删除Grouped实体时,我的组实体将被删除,而不仅仅是关联:

@ManyToMany(cascade = CascadeType.ALL, // same behavior with CascadeType.REMOVE

mappedBy = "grouped",

targetEntity = Group.class)

private Set groups = new HashSet<>();

如果我删除级联,hibernate会尝试设置group_id = null并抛出ModelConstraintException.我不想将FK设置为??可空.

集团实体:

@Entity

@Table(name = "groups")

@Getter

@Setter

public class Group {

@Id

@GeneratedValue(strategy = GenerationType.AUTO)

private Integer id;

@ManyToMany(targetEntity = Grouped.class)

@JoinTable(

name = "association",

joinColumns = @JoinColumn(name = "group_id", nullable = false, updatable = false),

inverseJoinColumns = @JoinColumn(name = "grouped_id", nullable = false, updatable = false)

)

private Set grouped= new HashSet<>();

}

分组实体:

@Entity

@Table(name = "grouped")

@Getter

@Setter

public class Grouped {

@Id

@GeneratedValue(strategy = GenerationType.AUTO)

private Integer id;

@ManyToMany(mappedBy = "grouped", targetEntity = Group.class)

private Set groups= new HashSet<>();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值