Дополнительный столбец, поступающий в базу данных при использовании отображения @OneToMany

Я создавал три таблицы сущностей: студент, колледж и адрес. Когда я пытаюсь вставить данные в таблицу адресов, я получаю один дополнительный столбец (student_STUDENT_ID) только в таблице адресов в базе данных. Пожалуйста, найдите прикрепленный скриншот. Я не могу понять, почему появляются эти поля? Это можно удалить? Ниже приведен код для сопоставления этих трех объектов.

Адресная таблица -

@ManyToOne
private Student student;
//setters and getters 

Студенческий стол -

@OneToOne(cascade=CascadeType.ALL,fetch=FetchType.EAGER)
    @JoinColumn(name="COLLEGE_ID")
    private College college;
     //getters and setters 

    @OneToMany(cascade=CascadeType.ALL)
    @JoinColumn(name="STUDENT_ID")
    private Set<Address> addr;
    //getters and setters 

Стол в колледже -

@OneToOne(mappedBy="college",cascade=CascadeType.ALL)
    private Student student;

2 ответа

Решение

Попробуйте переместить @JoinColumn в класс Address

@ManyToOne
@JoinColumn(name = "STUDENT_ID")
private Student student;

Затем в таблице учеников добавьте mappedBy в @OneToMany

@OneToMany(cascade=CascadeType.ALL, mappedBy="student")
private Set<Address> addr;

Реальная конфигурация должна быть такой:

Адресный класс -

  @ManyToOne
        @JoinColumn(name="STUDENT_ID")
        private Student student;
//getters and setters 

Студенческий класс-

@OneToMany(cascade=CascadeType.ALL, mappedBy="student")
            private Set<Address> addr;
      //getters and setters

Никаких изменений в классе колледжа.

Другие вопросы по тегам