Hibernate @OneToMany - ребенок владеет отношениями, но имеет только идентификатор родителей - PullRequest
0 голосов
/ 02 мая 2020

У меня есть отношение @OneToMany, определенное для родительского класса следующим образом:

public class Course {
  @OneToMany(
      mappedBy = "courseId",
      fetch = FetchType.EAGER,
      cascade = CascadeType.ALL,
      orphanRemoval = true)
  private Set<Student> students;
}

С другой стороны, я просто сохраняю идентификатор родительского объекта:

public class Student {
  private Long courseId;
}

Когда я сохраняю курс с новыми студентами, спящий режим сначала сохраняет курс, а затем пытается сохранить каждого студента, чего я и ожидал. (Я могу видеть это через запись в спящем режиме.)

Однако, когда идет вставка каждого ученика, он передает null для courseId. В итоге база данных выдает эту ошибку: ERROR: null value in column "courseid" violates not-null constraint У меня есть другие примеры правильной работы кода, но по какой-то причине он ведет себя по-другому.

Есть причина, по которой он не использует идентификатор из Конечно это просто спасло? Есть ли какая-то другая конфигурация, которую мне нужно добавить для поддержки этого?

1 Ответ

0 голосов
/ 02 мая 2020

Я думаю, вам нужно изменить Student класс:

public class Student {

    @ManyToOne
    @JoinColumn(name="course_id", nullable=false)
    private Course course;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...