optional = false
в ManyToOne - это инструкция времени выполнения для структуры персистентности, которую нужно интерпретировать при создании объектов Java. nullable = true
в JoinColumn предназначен для настройки схемы базы данных и может интерпретироваться или не интерпретироваться во время выполнения в зависимости от вашего поставщика сохраняемости.
Как правило, сопоставление JoinColumn выполняется таким образом, чтобы указывать, что отношения управляются с другой стороны, Департаментом.
Скорее всего, у вас будет:
@OneToMany(cascade=CascadeType.ALL)
@JoinColumn(name="DEPT_ID")
private Set<Employee> employees;
Перейдите в свой отдел, и вы создадите новые отношения между сотрудниками и отделами, добавив их в коллекцию, а не установив отдел для сотрудника. Вот почему вы отмечаете отдел сотрудника как не подлежащий обновлению, поскольку отдел «владеет» возможностью изменять отношения.