Во-первых, исправьте ваше отображение.
Ассоциация является двунаправленной, и одна сторона (одна сторона) должна быть помечена как обратная другой, используя атрибут mappedBy:
@OneToMany(mappedBy = "office")
public set<Employee> employees;
Сотрудник является только одним изсотрудники офиса.Вы действительно хотите удалить весь офис, когда вы удаляете одного сотрудника?Если нет, то почему вы ставите cascade=cascadeType.ALL
на @ManyToOne
?Эти аннотации имеют последствия.Не используйте их, не понимая их.
Теперь, чтобы действительно ответить на вопрос.Если офис уже существует в базе данных, вы не должны создавать новый.Идите, извлеките его из базы данных и обновите его:
Office office = em.find(Office.class, 23);
// office is now attached, and any change you make on the entity will be written to the database
office.setGrade(5);
Теперь вы также можете прикрепить офис к новому сотруднику.Но поскольку это двунаправленное отношение, вам также следует инициализировать другую сторону ассоциации, чтобы сохранить целостность графа объекта:
employee.setOffice(office);
office.addEmployee(employee);
em.persist(employee);