更改Spring的@JoinColumn字段的ID

时间:2019-12-29 16:33:31

标签: java spring jpa

我有2个实体。首先是:

@ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "team_id")
    private Team team;

我想创建一个方法,该方法可以将数据库中的team_id更改为另一个。 我该如何实施? 我尝试通过存储库方法从数据库中找到2个对象,并将set新对象添加到第一个对象。

我尝试过:

  public void fromTo(String from, String to, String playerName) {
        Player player = playerRepo.findByName(playerName);

        Long teamIdOfPlayer = player.getTeam().getId();

        Team teamFrom = teamRepo.findByName(from);

        if (teamFrom.getId().equals(teamIdOfPlayer)) {
            teamRepo.findByName(to).setId(teamIdOfPlayer);
            player.setTeam(teamRepo.findByName(to));
        }
        teamRepo.save(teamFrom);
        playerRepo.save(player);
    }

1 个答案:

答案 0 :(得分:0)

由于您使用了JPA,并且拥有一种可以为您提供团队服务的方法,因此您可以仅在当前对象上设置团队并保留该对象。 JPA(JPA提供程序)将负责更新team_id

类似这样的东西:

    MyObject x = ... 
    MyObject x2 = ... 
    x2.setTeam(x.getTeam())
    dao.persist(x2); 

编辑:您添加了一个代码段。您是否在交易中运行它? (由于SO,我无法发表评论)