Hibernate OneToMany Relation не может завести ребенка - PullRequest
0 голосов
/ 09 марта 2020

Я новичок в спящем режиме и пытаюсь изучить основы. Я пытаюсь реализовать отображение oneToMany, но у меня возникла проблема при выполнении запроса get. В основном ответ не показывает дочернюю сущность.

 public class Student implements Serializable {

        @Id
        @GeneratedValue
        private int id;

        private String name;

        @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
        Set<Course> courseList;
    }

 public class Course {

        @Id
        @GeneratedValue
        private int id;

        private String name;

}

Я знаю, что это не оптимальный способ, но я просто пытаюсь увидеть, как гибернат создает sql. Я использую репозитории Spring jpa, чтобы получить все уроки для студентов. Как я проверяю базу данных курса и отношения со студентами верны. Но CourseList пуст в GET запросе студента. Я не понимаю, почему.

Вот вывод hibernate:

 select
        student0_.id as id1_1_,
        student0_.name as name2_1_ 
    from
        students student0_


select
        courselist0_.student_id as student_1_2_0_,
        courselist0_.course_list_id as course_l2_2_0_,
        course1_.id as id1_0_1_,
        course1_.name as name2_0_1_,
        course1_.student_id as student_3_0_1_,
        student2_.id as id1_1_2_,
        student2_.name as name2_1_2_ 
    from
        students_course_list courselist0_ 
    inner join
        courses course1_ 
            on courselist0_.course_list_id=course1_.id 
    left outer join
        students student2_ 
            on course1_.student_id=student2_.id 
    where
        courselist0_.student_id=?

Примечание: В отладке я вижу, что дочерняя сущность была заполнена. Но ответ не включает его.

Примечание 2. Кроме того, мне интересно, почему hibernate создает тот же sql (второй, который выбирает дочернюю сущность), когда я использую fetchType.LAZY

...