Desculpa mandar esse problema aqui, é que esta dando erro
Desculpa mandar esse problema aqui, é que esta dando erro
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!