我有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);
}
答案 0 :(得分:0)
由于您使用了JPA,并且拥有一种可以为您提供团队服务的方法,因此您可以仅在当前对象上设置团队并保留该对象。 JPA(JPA提供程序)将负责更新team_id
。
类似这样的东西:
MyObject x = ...
MyObject x2 = ...
x2.setTeam(x.getTeam())
dao.persist(x2);
编辑:您添加了一个代码段。您是否在交易中运行它? (由于SO,我无法发表评论)