Вместо расписания конкретной группы выдает расписание всех групп

У меня было задание написать университетское расписание. Столкнулся с проблемой, что поскольку у меня поиск расписания идет по дню и группе(не id группы или еще что-то, а именно группе), у меня вместо расписания конкретной группы выдает все расписание(и первой группы, и второй), это связано вероятнее всего с тем, что у меня отношение между группой и расписанием "одна группа может иметь много расписаний". Вот только как это исправить я не знаю. Уточняю: пользователь вводит id студента, с помощью CrudRepo ищется студент по id, затем берется группа студента и поиск расписания на конкретный день конкретной группы студента.

controller

@RestController
@RequestMapping("api/timetable/")
public class ScheduleController {
    private final ScheduleService scheduleService;

    @Autowired
    public ScheduleController(ScheduleService scheduleService){
        this.scheduleService = scheduleService;
    }

    @GetMapping("{studentId}")
    public String getSchedule(@PathVariable Long studentId){
        return scheduleService.findScheduleByStudentId(studentId);
    }
} 

student entity

@Entity
@Table(name = "student")
@Getter
@NoArgsConstructor
public class Student {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private long studentId;

    @Column(name = "first_name")
    private String firstName;

    @Column(name = "last_name")
    private String lastName;

    @ManyToOne(fetch = FetchType.EAGER)
    @JoinTable(
            name = "students_group",
            joinColumns = @JoinColumn(name = "student_id"),
            inverseJoinColumns = @JoinColumn(name = "group_id")
    )
    private Group group;

    public Student(String firstName, String lastName, Group group){
        this.firstName = firstName;
        this.lastName = lastName;
        this.group = group;
    }
}

group entity

@Entity
@Table(name = "groups")
@Getter
@NoArgsConstructor
public class Group {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private int groupId;

    @Column(name = "number_of_group")
    private String numberOfGroup;

    @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    @JoinTable(
            name = "groups_timetable",
            joinColumns = @JoinColumn(name = "group_id"),
            inverseJoinColumns = @JoinColumn(name = "timetable_id")
    )
    private List<Timetable> timetable;

    public Group(String numberOfGroup, List<Timetable> timetable){
        this.numberOfGroup = numberOfGroup;
        this.timetable = timetable;
    }
}

timetable entity

@Entity
@Table(name = "timetable")
@Getter
@NoArgsConstructor
@ToString
public class Timetable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private long timetableId;

    private String schedule;

    @Column(name = "week_day")
    private int weekDay;

    @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    @JoinTable(
            name = "groups_timetable",
            joinColumns = @JoinColumn(name = "timetable_id"),
            inverseJoinColumns = @JoinColumn(name = "group_id")
    )
    private List<Group> group;

    public Timetable(String schedule, Integer weekDay){
        this.schedule = schedule;
        this.weekDay = weekDay;
    }
}

service

@Service
public class ScheduleService {
    private final StudentRepository studentRepository;
    private final TimetableRepository timetableRepository;

    @Autowired
    public ScheduleService(
            StudentRepository studentRepository,
            TimetableRepository timetableRepository){
        this.studentRepository = studentRepository;
        this.timetableRepository = timetableRepository;
    }

    public String findScheduleByStudentId(long studentId){
        Student student = studentRepository.findStudentByStudentId(studentId).orElseThrow(
                () -> new StudentNotFoundException(studentId)
        );
        return getSchedule(student.getGroup());
    }

    public String getSchedule(Group group){
        Calendar calendar = Calendar.getInstance();

        Timetable timetable = timetableRepository.
                findByWeekDayAndGroup(calendar.get(Calendar.DAY_OF_WEEK), group);

        return timetable.getSchedule();
    }
}

таблички

CREATE TABLE student(id BIGSERIAL PRIMARY KEY, first_name VARCHAR(20), last_name VARCHAR(30));

CREATE TABLE groups(id SERIAL PRIMARY KEY, number_of_group VARCHAR(6));

CREATE TABLE students_group(student_id BIGSERIAL REFERENCES student(id), group_id SERIAL REFERENCES groups(id));

CREATE TABLE timetable(id BIGSERIAL PRIMARY KEY, schedule VARCHAR(50), week_day SMALLINT);

CREATE TABLE groups_timetable(group_id SERIAL REFERENCES groups(id), timetable_id BIGSERIAL REFERENCES timetable(id));

INSERT INTO student(id, first_name, last_name) VALUES (1, 'Gleb', 'Chizh');

INSERT INTO groups(id, number_of_group) VALUES (1, '021703');

INSERT INTO students_group(student_id, group_id) VALUES (1, 1);

INSERT INTO timetable(id, schedule, week_day) VALUES (1, 'ppvis, math', 1);
INSERT INTO timetable(id, schedule, week_day) VALUES (2, 'maois, economy, psychology', 2);
INSERT INTO timetable(id, schedule, week_day) VALUES (3, 'math, ppvic, aois', 3);
INSERT INTO timetable(id, schedule, week_day) VALUES (4, 'msisvinft, maois', 4);
INSERT INTO timetable(id, schedule, week_day) VALUES (5, 'psychology, economy, math', 5);
INSERT INTO timetable(id, schedule, week_day) VALUES (6, 'ppvis, aois', 6);
INSERT INTO timetable(id, schedule, week_day) VALUES (7, 'aois, math', 7);

INSERT INTO groups_timetable(group_id, timetable_id) VALUES (1,1);
INSERT INTO groups_timetable(group_id, timetable_id) VALUES (1,2);
INSERT INTO groups_timetable(group_id, timetable_id) VALUES (1,3);
INSERT INTO groups_timetable(group_id, timetable_id) VALUES (1,4);
INSERT INTO groups_timetable(group_id, timetable_id) VALUES (1,5);
INSERT INTO groups_timetable(group_id, timetable_id) VALUES (1,6);
INSERT INTO groups_timetable(group_id, timetable_id) VALUES (1,7);

INSERT INTO student(id, first_name, last_name) VALUES (2, 'Stas', 'Badey');

INSERT INTO groups(id, number_of_group) VALUES (2, '056001');

INSERT INTO students_group(student_id, group_id) VALUES (2, 2);

INSERT INTO timetable(id, schedule, week_day) VALUES (8, 'economy, math, maois', 1);
INSERT INTO timetable(id, schedule, week_day) VALUES (9, 'msisvinft, psychology', 2);
INSERT INTO timetable(id, schedule, week_day) VALUES (10, 'aois', 3);
INSERT INTO timetable(id, schedule, week_day) VALUES (11, 'ppvis, economy, math', 4);
INSERT INTO timetable(id, schedule, week_day) VALUES (12, 'psychology, math', 5);
INSERT INTO timetable(id, schedule, week_day) VALUES (13, ' ', 6);
INSERT INTO timetable(id, schedule, week_day) VALUES (14, ' ', 7);

INSERT INTO groups_timetable(group_id, timetable_id) VALUES (2,1);
INSERT INTO groups_timetable(group_id, timetable_id) VALUES (2,2);
INSERT INTO groups_timetable(group_id, timetable_id) VALUES (2,3);
INSERT INTO groups_timetable(group_id, timetable_id) VALUES (2,4);
INSERT INTO groups_timetable(group_id, timetable_id) VALUES (2,5);
INSERT INTO groups_timetable(group_id, timetable_id) VALUES (2,6);
INSERT INTO groups_timetable(group_id, timetable_id) VALUES (2,7);

Ответы (0 шт):