Pessoal, estou com um problema interessante.
Um sistema onde temos paciente/cliente, médico/doutor e consulta como entidades e temos relacionamentos bidirecionais. Veja:
@Table(name = "medical_consultation")
public class MedicalConsultation {
@Id
@GeneratedValue
private Long id;
@JsonBackReference(value = "job-historical")
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name="doctor_fk")
//@Fetch(FetchMode.SELECT)
private Doctor doctor;
@JsonBackReference( value = "client-consultations-historical")
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name="client_fk")
//@Fetch(FetchMode.SUBSELECT)
private Client client;
@JsonFormat(pattern = "dd/MM/yyyy hh:mm")
private Date date;
private BigDecimal price;
@Entity(name = "doctor")
public class Doctor {
@Id
@GeneratedValue
private Long id;
@OneToOne(cascade = CascadeType.ALL)
private Person person;
@JsonManagedReference(value = "job-historical")
@OneToMany(mappedBy = "doctor", fetch = FetchType.EAGER ,cascade = CascadeType.ALL)
//@Fetch(FetchMode.SUBSELECT)
private List<MedicalConsultation> medicalConsultations;
@Enumerated
private Type type;
@ElementCollection
private List<String> specialties;
@Entity(name = "client")
public class Client{
@Id @GeneratedValue
private Long id;
@OneToOne(cascade = CascadeType.ALL)
private Person person;
@JsonManagedReference(value = "client-consultations-historical")
@OneToMany(mappedBy="doctor" , fetch = FetchType.EAGER ,cascade = CascadeType.ALL)
//@Fetch(FetchMode.SUBSELECT)
private List<MedicalConsultation> medicalConsultations;
Em resumo, após cadastrar um cliente e um doutor (até então sem consulta), quando eu crio(cadastro) uma consulta, relaciono o cliente e o doutor já cadastrado. O problema que estou tendo é que meus GETs estão retornando uma lista vazia de consultas quando eu faço o GETClients:
@GetMapping("/clients")
public List<Client> getClients(){
List<Client> clients = this.clientRepo.findAll();
return clients;
}
Ou seja, o carregamento não está acontecendo. Outros problemas são semelhantes a esse. Então, se eu souber corrigir esse, talvez eu consiga lidar com os outros.
Alguém tem alguma dica para mim?
PS.: O Curioso é que a lista de doutores vem com as consultas.
@GetMapping("/doctors")
public List<Doctor> getDoctors(){
return this.doctorRepo.findAll();
}