Unendliche Antwort über die Entity/DTO von Spring BootJava

Java-Forum
Guest
 Unendliche Antwort über die Entity/DTO von Spring Boot

Post by Guest »

Ich versuche, einen Controller für die Speicherung von Mitarbeitern und Abteilungen zu testen. Aber beim Erstellen von Mitarbeitern mit der angegebenen Nutzlast (Beitrag Mitarbeiter):
{
"name": "malay",
"dateOfJoining": "2024-12-18",
"isActive": true,
"department": {
"id": 1
}
}
Es führt zu einer unendlichen rekursiven Antwort, aber nur beim privaten Kommentieren Listen Sie Mitarbeiter in der Abteilung dto auf, es funktioniert gut. Was aber, wenn ich die Liste der Mitarbeiter einer Abteilung wissen möchte? Außerdem habe ich @JsonManagedReference, @JsonBackReference und @JsonIgnore für die erforderlichen Felder verwendet. Aber keine davon hat funktioniert.
Wie kann ich das also so implementieren, dass ich auch die Liste der Mitarbeiter in einer Abteilung erhalte und keine unendliche rekursive Antwort (zum Beispiel das Erstellen eines Mitarbeiters)
deptDto
@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;

}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post