Hibernate @OneToMany отображается в 2 разных столбцах

1

У меня есть объект, называемый Lecture, и у него есть 2 поля, которые являются типами Учителя

class Lecture{

    private Teacher teacher;
    private Teacher subsTeacher;

}

Предположим, Учитель может преподавать много лекций. Таким образом, между Учителем существует одна-единственная связь → Лекция

Сейчас в классе Учителя у меня есть:

@OneToMany(mappedBy = "teacher")
@Cascade(value = {org.hibernate.annotations.CascadeType.DETACH, 
                            org.hibernate.annotations.CascadeType.LOCK})
public Set<Lecture> getLectures() {
    return lectures;
}

Тем не менее, это не вернет мне Лекции, на которые учитель подчиняется. Но они мне тоже нужны.

Как я могу это достичь?

Структура таблицы:

Таблица: Лекция

Столбцы: id, teacher_id, substeacher_id

Учитель таблицы:

Столбцы: id, name

  • 0
    Проблема - только объект учителя, сопоставленный с набором лекции. Вы можете опубликовать свою структуру таблицы, пожалуйста.
  • 0
    @ambarox Я добавил структуру таблицы.
Показать ещё 3 комментария
Теги:
hibernate
jpa

1 ответ

4
Лучший ответ

Для этого вам нужно отфильтровать лекции в соответствии с учителем/суб-учителем и вручную установить в список лекций. В противном случае вам нужно сделать отдельное сопоставление. если вам нужно сохранить лекции с учителем, вы должны добавить отдельное сопоставление и использовать соответственно.

@OneToMany(mappedBy = "subsTeacher", cascade = {CascadeType.ALL}) 
private Set<Lecture> subLectures;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню