如何在不删除 spring 中的实体的情况下删除多对多关系中的引用?

时间:2021-06-15 11:43:09

标签: java spring spring-boot

我正在尝试制作一个春季应用程序,您可以在其中喜欢和不喜欢游戏。我在玩家和游戏之间有一个多对多的关系。我已经做到了,当一个玩家喜欢一个游戏时,它会将该关系添加到链接表中,当一个玩家不喜欢某个游戏时,我想删除该关系。我已经阅读了其他 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

0 个答案:

没有答案