Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

[Dúvida] Não consigo criar o construtor da Consulta

Mesmo usando ambos os métodos getReferenceById e o findById nenhum deles resolve e pede pra eu criar um construtor na Entidade JPA.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Obs: foi usado o método .get() no final junto com o findById().

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

4 respostas

Olá!

Aparentemente, o problema surge da sua classe Consulta, que está guardando os ids do médico e paciente em vez das instâncias das classes Medico e Paciente buscadas com findById (por isso o Intellij sugere criar um novo construtor que receba as referências em si, e não os ids).

Poderia nos mostrar como está o seu código da classe Consulta?

Segue o código da classe Consulta

package med.voll.api.domain.consultas;

import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import med.voll.api.domain.medicos.Medico;
import med.voll.api.domain.pacientes.Paciente;

import java.time.LocalDateTime;

@Table(name = "consultas")
@Entity(name = "Consulta")
@Getter
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(of = "id")
public class Consulta {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name="medico_id")
    private Long idMedico;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name="paciente_id")
    private Long idPaciente;

    private LocalDateTime data;

}
solução!

Em vez de manter referências para os ids do médico e paciente na Consulta, tente referenciar as entidades Medico e Paciente. Ou seja:

De:

// código omitido

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="medico_id")
private Long idMedico;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="paciente_id")
private Long idPaciente;

// código omitido

para:

// código omitido

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "medico_id")
private Medico medico;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "paciente_id")
private Paciente paciente;

// código omitido

Meu deus que falta de atenção minha. Fui reassistir a aula que o professor apresentava as novas funcionalidades e de fato, ele referencia as próprias entidades e não os IDs. Valeu pelo toque.