Java 多次调用jpa repository.save()会引发异常
我想多次调用jpa repository.save 但当我第二次尝试保存对象时,它抛出PersistentObjectException,并说分离的实体已传递给Persiste 代码和异常如下所示。我错过了什么Java 多次调用jpa repository.save()会引发异常,java,spring,hibernate,jpa,orm,Java,Spring,Hibernate,Jpa,Orm,我想多次调用jpa repository.save 但当我第二次尝试保存对象时,它抛出PersistentObjectException,并说分离的实体已传递给Persiste 代码和异常如下所示。我错过了什么 public void createGame(GameTeamRequest gameTeamRequest) { for(Entry<String, Integer> hm : gameTeamRequest.getTeamsInnigsPostionMap
public void createGame(GameTeamRequest gameTeamRequest) {
for(Entry<String, Integer> hm : gameTeamRequest.getTeamsInnigsPostionMap().entrySet()) {
GameTeam gameTeam = new GameTeam();
Team team = new Team();
team.setTeamName(hm.getKey());
gameTeam.setTeam(team);
gameTeam.setGame(gameTeamRequest.getGame());
gameTeam.setInningsPosition(hm.getValue());
gameTeamRepository.save(gameTeam);
}
}
游戏类别:
@Entity
@Table(name = "GAME")
public class Game extends Model {
@Column(name = "TOURNAMENT_ID")
private String tournamentId;
@OneToMany(mappedBy = "game")
private Set<GameTeam> gameTeam;
}
例外情况是指游戏对象,因此看起来您正在将分离的游戏设置为第二个GameTeam。 您可以通过添加(至少)来解决此问题
到您的映射。可能是您忽略了一些JPA规则,您的示例没有所有信息,我邀请您查看此网站并阅读其他内容,了解我应该将其添加到哪个类和字段?添加到GameTeam中游戏属性的映射-可能将您的实体代码添加到您的问题中以获得更详细的答案。然后添加您的实体
@Entity
@Table(name = "GAME")
public class Game extends Model {
@Column(name = "TOURNAMENT_ID")
private String tournamentId;
@OneToMany(mappedBy = "game")
private Set<GameTeam> gameTeam;
}
@Entity
@Table(name = "TEAM")
public class Team extends Model {
@Column(name = "TEAM_NAME")
private String teamName;
@OneToMany(mappedBy = "game")
private Set<GameTeam> gameTeam;
}
@Entity
@Table(name = "GAME_TEAM")
public class GameTeam extends Model {
@ManyToOne(cascade = { CascadeType.PERSIST, CascadeType.MERGE })
@JoinColumn(name = "GAME_ID")
private Game game;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "TEAM_ID")
private Team team;
@Column(name = "INNINGS_POSITION")
private int inningsPosition;
}
cascade = { CascadeType.PERSIST, CascadeType.MERGE }