Mesmo usando ambos os métodos getReferenceById e o findById nenhum deles resolve e pede pra eu criar um construtor na Entidade JPA.
Obs: foi usado o método .get() no final junto com o findById().
Mesmo usando ambos os métodos getReferenceById e o findById nenhum deles resolve e pede pra eu criar um construtor na Entidade JPA.
Obs: foi usado o método .get() no final junto com o findById().
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;
}
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.