Бесконечный ответ через объект/dto загрузки SpringJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Бесконечный ответ через объект/dto загрузки Spring

Сообщение Anonymous »

Я пытаюсь протестировать контроллер для хранения данных о сотрудниках и отделах. Но при создании сотрудников с заданной полезной нагрузкой (сотрудник должности):
{
"name": "malay",
"dateOfJoining": "2024-12-18",
"isActive": true,
"department": {
"id": 1
}
}
Это приводит к бесконечному рекурсивному ответу, но только при комментировании частного Перечислите сотрудников в отделе dto, все работает нормально. Но что, если я захочу узнать список сотрудников отдела. А также я использовал @JsonManagedReference, @JsonBackReference и @JsonIgnore в необходимых полях. Но ни один из них не сработал.
Так как же мне реализовать это таким образом, чтобы я также получал список сотрудников в отделе, а не бесконечный рекурсивный ответ (например, создание сотрудника)
дептDto
@Data
@AllArgsConstructor
@NoArgsConstructor
public class departmentDto {
private Integer id;
@NonNull
private String name;
private List employees;
private employeeDto hod;
// private Integer hod_id;
}

empDto
@Data
@AllArgsConstructor
@NoArgsConstructor
public class employeeDto {
private Integer id;
private String name;
private LocalDate dateOfJoining;
@JsonProperty("isActive")
private boolean isActive;
private departmentDto department;
}

empService
public employeeDto createEmployee (employeeDto empDto) {
//
employeeEntity empEntity = modelMapper.map(empDto, employeeEntity.class);
// employeeEntity empEntity = new employeeEntity(empDto.getId(),empDto.getName(),empDto.getDateOfJoining(),empDto.isActive());
// handling the department relationship
if (empDto.getDepartment() != null && empDto.getDepartment().getId() != null) {
departmentEntity deptEntity = departmentRepository.getReferenceById(empDto.getDepartment().getId());
empEntity.setDepartment(deptEntity);
}
employeeEntity createdEmpEntity = employeeRepository.save(empEntity);
// ModelMapper modelMapper = new ModelMapper();
employeeDto createdEmpDto = modelMapper.map(createdEmpEntity, employeeDto.class);
// employeeDto createdEmpDto = new employeeDto(
// createdEmpEntity.getId(),
// createdEmpEntity.getName(),
// createdEmpEntity.getDateOfJoining(),
// createdEmpEntity.isActive()
// );
return createdEmpDto;
}

deptEntity
@Entity
//@Table(name="department",schema = "spring_emp_dept")
@Table(name="department")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class departmentEntity {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
@Column(nullable = false)
private String name;

//relationships
@OneToMany(mappedBy = "department")
@JsonManagedReference
private List employees;

@ManyToOne
@JoinColumn(name = "hod_id")
@JsonBackReference
private employeeEntity hod;
}

empEntity:
@Entity
//@Table(name="employees",schema="spring_emp_dept")
@Table(name="employees")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class employeeEntity {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@Column(nullable = false)
private String name;
private LocalDate dateOfJoining;
private boolean isActive;
// relationships
@ManyToOne
@JoinColumn(name="dept_id")
@JsonBackReference
private departmentEntity department;
@OneToMany(mappedBy = "hod")
@JsonBackReference
private List hodDept;

}


Подробнее здесь: https://stackoverflow.com/questions/793 ... entity-dto
Ответить

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

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

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

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

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