4
respostas

Erro no var consulta

Insira aqui a descrição dessa imagem para ajudar na acessibilidade Desculpa mandar esse problema aqui, é que esta dando erro

4 respostas

Oi!

Verifica se sua classe Consulta já tem o atributo motivoCancelamento. Ela deveria estar assim, nesse ponto do curso:

@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 Medico medico;

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

    private LocalDateTime data;

    @Column(name = "motivo_cancelamento")
    @Enumerated(EnumType.STRING)
    private MotivoCancelamento motivoCancelamento;

    public void cancelar(MotivoCancelamento motivo) {
        this.motivoCancelamento = motivo;
    }

}

E você deve ter uma migration que cria essa nova coluna na tabela de consultas:

alter table consultas add column motivo_cancelamento varchar(100);

Rodrigo,

Fiquei na dúvida também porque na minha aplicação deu esse mesmo problema antes de começar a implantar a regra de negócio de cancelamento de consulta.

Oi!

Antes de implementar o cancelamento de consultas a entidade deve estar assim:

@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 Medico medico;

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

    private LocalDateTime data;

}

E no código que cria um objeto consulta deve ser passado apenas null (para o id), o medico, o paciente e a data:

var consulta = new Consulta(null, medico, paciente, dados.data());

Ok, deu certo. Obrigado!