我想从父实体中删除子实体。
我发现,如果我删除子代,它也会删除父代。
一对多
@OneToMany(cascade = CascadeType.ALL,
mappedBy = "giftList",
fetch = FetchType.EAGER,
orphanRemoval = true)
private Collection<Gift> gifts = new HashSet<>();
多对一
@ManyToOne(optional = true,
fetch = FetchType.LAZY,
cascade = CascadeType.ALL)
private GiftList giftList;
@删除Map
@DeleteMapping("/gifts/{id}")
public ResponseEntity<Gift> deleteGiftById(@AuthenticationPrincipal UsernamePasswordAuthenticationToken usernamePasswordAuthenticationToken, @PathVariable("id") Long giftId) {
final Optional<Gift> giftListOptional = giftRepository.findById(giftId);
if(giftListOptional.isPresent()){
final Gift gift = giftListOptional.get();
if(gift.getGiftList().getUser().getEmail().equals(usernamePasswordAuthenticationToken.getName())){
giftRepository.delete(gift);
return new ResponseEntity<>(HttpStatus.OK);
} else {
return new ResponseEntity<>(HttpStatus.UNAUTHORIZED);
}
}
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
我试过将礼物列表的层叠类型设置为 CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH
,但这会阻止作为 CascadeType.REMOVE
不包括在内。
如果我加上 CascadeType.REMOVE
然后 gift
以及 giftlist
将被删除。
我应该使用什么级联类型?
暂无答案!
目前还没有任何答案,快来回答吧!