У меня есть сущности User
и School
.
Между ними есть внешний ключ в базе данных MySQL (в одной школе много пользователей).
В User
У меня есть:
@ManyToOne(optional = false, targetEntity = School.class, cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "schoolId", referencedColumnName = "id", nullable = false)
private School school;
В School
У меня есть:
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, targetEntity = User.class)
@JoinColumn(name = "schoolId")
private List<User> users;
Когда я хочу сохранить School
сущность с List<User>
внутри, я вызываю
schoolRepository.save(school);
все в порядке, данные сохраняются в таблицах school
и user
.
НО
Мне нужно добавить not null constraint
в user.school_id
столбец (я использую liquibase
для него), и когда я делаю это и пытаюсь снова сохранить School
сущность, я получаю:
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'school_id' cannot be null
.
Как получилось? И как это можно исправить?