Пока я пытаюсь сохранить сущность верхнего уровня (используя JPA), нужно ли мне заново получать сопоставленную сущность ManyToOne из базы данных и устанавливать ее, или я не могу просто установить Id (сопоставленной сущности manyToOne и сохранить сущность верхнего уровня?
Когда не получается новая сущность, она выдает: org.hibernate.TransientObjectException:
Структуры таблиц, которые мы используем:
DEPARTMENT(DEPARTMENT_ID BIGINT, NAME VARCHAR(128))
EMPLOYEE(EMPLOYEE_ID BIGINT, NAME VARCHAR(128), DEPARTMENT_ID BIGINT)
Entities:
class Department
{
@Id
Long departmentId;
String name;
@Version
Long versionNumber;
}
class Employee
{
@Id
Long employeeId;
String name;
@ManyToOne
Department department;
@Version
Long versionNumber
}
(оба класса имеют методы установки и получения для всех полей и конструктор по умолчанию, конструктор, который принимает первичный ключ в качестве аргумента)
Теперь, если я хочу сохранить Employee с значением DepartmentId (скажем, 100), нужно ли сначала получить запись отдела, а затем установить ее для сотрудника?
Не могу ли я создать экземпляр Отдела напрямую (путем установки первичного ключа (DepartmentId)) и задать экземпляр Отдела в Employee и сохранить Employee?
Когда я делаю это, он выдает org.hibernate.TransientObjectException.
Есть ли какие-либо предложения по наилучшей практике для этого?
Заранее спасибо