StackoverflowError: у меня есть цикл, но я не знаю, где и почемуJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 StackoverflowError: у меня есть цикл, но я не знаю, где и почему

Сообщение Anonymous »

Я знаю, что у меня где-то есть петля, но не знаю, где и почему. Пытаюсь добавить тренеров в свой курс (Курс).
Это мой код:

Код: Выделить всё

@EqualsAndHashCode( callSuper = false )
@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Kurs extends PanacheEntityBase implements Serializable {

@Id
@GeneratedValue( strategy = GenerationType.AUTO )
private Long id;

@Basic
@Column(name = "name", nullable = false)
private String name;

@OneToMany(mappedBy = "kurs", fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true)
private Set trainers = new HashSet();

public void addTrainer(Kursuser trainer) {
// Create a Kurs2Trainer object
Kurs2Trainer kurs2Trainer = new Kurs2Trainer();
kurs2Trainer.setTrainer(trainer);
kurs2Trainer.setKurs(this);

// Add the Kurs2Trainer object to the trainers set
this.trainers.add(kurs2Trainer);

// Add this Kurs to the trainer's set
trainer.getTrainerBei().add(kurs2Trainer);
}
}
Пользователь курса:

Код: Выделить всё

@Entity
@Data
@EqualsAndHashCode( callSuper = false )
@NoArgsConstructor
@AllArgsConstructor
public class Kursuser extends PanacheEntityBase implements Serializable {

@Id
private Long id;

@OneToOne( fetch = FetchType.LAZY )
@MapsId
private User user;

/*
Diese Person ist Trainer an den folgenden Kursen
*/
@OneToMany( mappedBy = "trainer", fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true)
private Set trainerBei = new HashSet();
}
Курс2Тренер:

Код: Выделить всё

@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Kurs2Trainer implements Serializable {

@EmbeddedId
private Kurs2TrainerID id = new Kurs2TrainerID();

@MapsId("trainerId")
@ManyToOne( fetch = FetchType.LAZY )
@JoinColumn( name = "trainer_id" )
private Kursuser trainer;

@MapsId("kursId")
@ManyToOne( fetch = FetchType.LAZY )
@JoinColumn( name = "kurs_id" )
private Kurs kurs;
}
Kurs2TrainerID:

Код: Выделить всё

@Data
@Embeddable
public class Kurs2TrainerID implements Serializable {
@Column(name = "trainerId")
private Long trainerId;
@Column(name = "kursId")
private Long kursId;
}
Когда я пытаюсь запустить этот код:

Код: Выделить всё

private void addTrainerToKurs(User trainer, Kurs k){
//Check if we have already the trainer in the course
if ( CollectionUtils.isNotEmpty( k.getTrainers() ) ) {
for(Kurs2Trainer kTrainer : k.getTrainers()){
if(kTrainer.getId().getTrainerId().equals( trainer.getId())){
return;
}
}
}

//We dont have this user in our course so add
Kursuser trainerKursuser = kursuserService.getKursuser(trainer);
k.addTrainer(trainerKursuser);
}
Я получаю следующее сообщение об ошибке:

Код: Выделить всё

java.lang.StackOverflowError
at at.tanzauswertung.portal.kurs.entities.Kursuser.$$_hibernate_read_id(Kursuser.java)
at at.tanzauswertung.portal.kurs.entities.Kursuser.getId(Kursuser.java:25)
at at.tanzauswertung.portal.kurs.entities.Kursuser.hashCode(Kursuser.java:19)
at at.tanzauswertung.portal.kurs.entities.Kurs2Trainer.hashCode(Kurs2Trainer.java:11)
at java.base/java.util.AbstractSet.hashCode(AbstractSet.java:124)
Пожалуйста, покажите мне мою ошибку. Большое спасибо

Подробнее здесь: https://stackoverflow.com/questions/786 ... re-and-why
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»