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