Desculpa mandar esse problema aqui, é que esta dando erro
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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!