У меня проблема с двунаправленным отношением один ко многим.У меня проблема с добавлением элемента B (многие) в A (один).Я пытаюсь добавить новый элемент в сущности.Вот моя схема БД: Схема БД
Вот моя сущность А:
public class Application {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int Id;
@Column(name = "has_paid")
private boolean paid;
@Column(name = "is_accepted")
private boolean accepted;
@OneToOne
@JoinColumn(name = "team_id")
private Team team;
@OneToMany(mappedBy = "application", cascade = CascadeType.ALL)
private List<Player> players;
public List<Player> getPlayers() {
return players;
}
public void setPlayers(List<Player> players) {
this.players = players;
}
public void addPlayers(Player player){
System.out.println("---------------1");
player.setApplication(this);
System.out.println("---------------2");
this.players.add(player);
System.out.println("---------------3");
}
}
Это моя сущность Б:
public class Player {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int Id;
private String name;
private String role;
private String size;
@ManyToOne
@JoinColumn(name = "application_id")
private Application application;
public Application getApplication() {
return application;
}
public void setApplication(Application application) {
this.application = application;
}}
Все классы имеют правильные методы получения и установки
Мой класс обслуживания:
@ResponseStatus(HttpStatus.CREATED)
@Transactional(rollbackFor = Exception.class)
@Override
public Object create(ApplicationsPostDTO applicationsRequest){
if(Optional.ofNullable(applicationsRequest).isPresent()){
System.out.println(applicationsRequest.toString());
Application application = new Application();
application.setTeam(teamsRepositories.findById(applicationsRequest.getTeam_id()).orElseThrow(BadRequestException::new));
application.setAccepted(applicationsRequest.isAccepted());
application.setPaid(applicationsRequest.isPaid());
System.out.println(application.toString());
applicationsRequest.getPlayers().forEach(it -> {
System.out.println(it.toString());
application.addPlayers(it);
});
System.out.println(application.toString());
return applicationsRepositories.save(application);
}else{
throw new BadRequestException();
}
}
Ошибка трассировки: Номер экрана 1
Номер экрана2