Дополнительный столбец, поступающий в базу данных при использовании отображения @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
Никаких изменений в классе колледжа.