首页 > 解决方案 > 如何在不删除春季实体的情况下删除多对多关系中的引用?

问题描述

我正在尝试制作一个弹簧应用程序,您可以在其中喜欢和不喜欢游戏。我在玩家和游戏之间有一个多对多的关系。我已经做到了,当玩家喜欢游戏时,它会将这种关系添加到链接表中,而当玩家不喜欢游戏时,我想删除这种关系。我已经阅读了其他 stackoverflow 问题,他们说只是从相应的列表中删除。问题是只这样做是行不通的,因为数据库需要更新。我可以使用的是playerRepository.delete(player),但这会删除参考和不是我想要的播放器。我只想删除该引用。

球员等级:

@ManyToMany
@JoinTable(name = "game_like", joinColumns = @JoinColumn(name = "player_id"), inverseJoinColumns = @JoinColumn(name = "game_id"))
private List<Game> games = new ArrayList<>();

游戏类:

@ManyToMany(mappedBy = "games")
@JsonIgnore
private List<Player> players = new ArrayList<>();

玩家控制器:

@DeleteMapping(path = "api/v1/player/{id}/unlove")
public void unloveGame(@PathVariable Long id, @RequestBody Game game) {
    Player player = playerRepository.findById(id).get();
    game.removePlayer(player);
    player.removeGame(game);
    playerRepository.delete(player);

}

我怎样才能做到这一点?

编辑:我也尝试过使用playerRepository.save(player),但这也不起作用。我还读过CascadeType.remove对于多对多关系不推荐使用

标签: javaspringspring-boot

解决方案


推荐阅读