Я пытаюсь протестировать контроллер для хранения данных о сотрудниках и отделах. Но при создании сотрудников с заданной полезной нагрузкой (сотрудник должности):
{
"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
Бесконечный ответ через объект/dto загрузки Spring ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1734932845
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;
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79300666/infinite-response-through-spring-boots-entity-dto[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия