我有 2 个实体。首先是:
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "team_id")
private Team team;
我想创建一个方法,可以将数据库中的 team_id 更改为另一个。 我怎样才能实现它? 我尝试通过存储库方法从数据库中查找 2 个对象,并将新对象设置为第一个对象。
我尝试过:
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);
}
最佳答案
由于您使用 JPA 并有一个为您提供团队的方法,因此您可以在当前对象上设置团队并保留该对象。 JPA(JPA 提供者)将负责更新 team_id
。
类似这样的事情:
MyObject x = ...
MyObject x2 = ...
x2.setTeam(x.getTeam())
dao.persist(x2);
编辑:您添加了一个片段。你在事务中运行它吗? (因为这样,我无法发表评论)
关于java - 如何在 Hibernate 中将相关对象更改为另一个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59521240/