Springboot JPA добавляет связанный объект к новому объекту в ассоциации ManytoOneJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Springboot JPA добавляет связанный объект к новому объекту в ассоциации ManytoOne

Сообщение Anonymous »

У меня есть связь @ManyToOne между сотрудником и отделом.
Каждый раз, когда я добавляю нового сотрудника в отдел, мне нужно обновить счетчик в сущности отдела для общего количества сотрудников.
Каждый раз, когда добавляется новый сотрудник, я получаю сущность «Отдел» от сущности «Сотрудник» менеджера, обновляю счетчик, а затем устанавливаю сущность «Отдел» для новой сущности «Сотрудник» и вызов метода save() в репозитории Сотрудники с новым объектом Сотрудник. Однако это вызывает у меня ошибку «отсоединенный объект, переданный для сохранения».
У меня для @Cascade установлено значение @Cascade.ALL в поле Department_id в объекте «Сотрудник», который работает, когда добавляется 1-й сотрудник. Отдел создается автоматически. Проблема возникает, когда я пытаюсь получить сущность «Отдел» от существующего сотрудника, прикрепить ее к новому сотруднику и попытаться сохранить новую сущность «Сотрудник».
Код выглядит следующим образом:

Код: Выделить всё

@Entity
@Table(name = "employee")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class EmployeeEntity implements Serializable {

@Id
@SequenceGenerator(name = "employee_id_seq", sequenceName = "employee_id_seq", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "employee_id_seq")
@Column(name = "id", updatable = false)
private Integer id;

@JdbcTypeCode(SqlTypes.Long)
@Column(name = "employee_id")
private Long employeeId;

@ManyToOne
@Cascade({CascadeType.ALL})
@JoinColumn(name = "department_id", nullable = false)
private DepartmentEntity departmentEntity;

public EmployeeEntity(Long employeeId, DepartmentEntity departmentEntity) {
this.employeeId = employeeId;
this.departmentEntity = departmentEntity;
}
}

Код: Выделить всё

@Entity
@Table(name = "department")
@Data
@NoArgsConstructor
public class DepartmentEntity implements Serializable {
@Id
@SequenceGenerator(name = "department_id_seq", sequenceName = "department_id_seq", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "department_id_seq")
@Column(name = "id", updatable = false)
private Integer id;

@JdbcTypeCode(SqlTypes.Integer)
@Column(name = "num_employees", nullable = false)
private Integer numEmployees;

}

Код: Выделить всё

// code execution
@Transactional
public void addEmployee(employeeId, managerId) {
Employee manager = empRepository.findById(managerId);

Department empDept = manager.getDepartmentEntity()
empDept.numEmployees++;

Employee associate = new EmployeeEntity(employeeId, empDept);

empRepository.save(associate); // this throws the exception
}
Есть мысли, как это можно решить? Заранее спасибо!


Подробнее здесь: https://stackoverflow.com/questions/796 ... one-asssoc
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»