Senhores,
Estou desenvolvendo um simples agendamento de consultas para uma SPA, utilizando JPA e Spring Boot. Achei excelente o framework, mas me deparei com um problema chato.
Tenho um método que devolve um JSON com uma lista de médicos. Por sua vez, a classe médico possui três listas ManyToMany (Convenios, Locais de Atendimento e Especialidades). Gostaria que oJSON resultado da chamada viesse com as listagens preenchidas, porém todas as listagens chegam vazias.
Observação: Fiz o mesmo código utilizando diretamente JPA e JAX-RS com Jersey e JACKSON que funcionou.
Se possível, preciso da ajuda de vocês.
insira seu código aqui
@Entity @PrimaryKeyJoinColumn(name = "id") public class Medico extends Usuario implements Serializable{
private static final long serialVersionUID = 2194546045026085699L;
private String nome; private String cpf; private String crm; private String endereco; private String numeroTelefoneResidencia; private String numeroCelular; @ManyToMany private List convenios; @ManyToMany private List locaisAtendimento; @ManyToMany private List especialidades;
//Gets e sets }
@Entity public class LocalAtendimento implements Serializable{
private static final long serialVersionUID = 6153564307019391613L;
@Id @SequenceGenerator(initialValue = 1,allocationSize = 1,name = "local_atendimento_seq",sequenceName = "local_atendimento_seq") @GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "local_atendimento_seq") private Long id; private String nome; private String endereco; private String numeroTelefone; @ManyToMany(mappedBy = "locaisAtendimento") private List medicos; //Gets e sets }
@Entity public class Convenio implements Serializable{
private static final long serialVersionUID = 1964872250828573358L;
@Id @SequenceGenerator(initialValue = 1,allocationSize = 1,name = "convenio_seq",sequenceName = "convenio_seq") @GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "convenio_seq") private Long id; private String nome; @ManyToMany(mappedBy = "convenios") private List medicos;
//Gets e sets
}
@Entity public class Especialidade implements Serializable{
private static final long serialVersionUID = 7650653734406070201L;
@Id @SequenceGenerator(initialValue = 1,allocationSize = 1,name = "especialidade_seq",sequenceName = "especialidade_seq") @GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "especialidade_seq") private Long id; private String nome; @ManyToMany(mappedBy = "especialidades") private List medicos; //Gets e sets }
@Repository public class MedicoDAO {
@PersistenceContext private EntityManager entityManager;
public List getMedicos(){ TypedQuery query = entityManager.createQuery("SELECT m FROM Medico m", Medico.class); return query.getResultList(); }
}
@RestController public class AgendamentoService {
@Autowired private MedicoDAO medicoDAO;
@RequestMapping(path="/api/agendamento/medicos") public List getMedicos() { return medicoDAO.getMedicos(); }
}