Estou criando um projeto pra ficar treinando enquanto não sai o resto da formação, mas estou tendo duvidas quando vou usar o thymeleaf sempre da algum erro. Vou deixar o código abaixo, se alguém identificar o erro e poder dar uma dica.
Classe Vaga:
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@ToString
@Entity
@Table(name = "tb_vagas")
public class Vaga {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String nomeDaVaga;
private String descricaoDaVaga;
private LocalDate dataDaAberturaDaVaga;
private LocalDate dataDeFechamentoDaVaga;
@Enumerated(EnumType.STRING)
private FormacaoAcademica formacaoAcademicaNecessaria;
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.REMOVE)
private List<Candidato> candidatoList;
private Boolean vagaAtiva;
public Vaga(DadosCadastroVagasDTO dados) {
this.setNomeDaVaga(dados.nomeDaVaga());
this.setDescricaoDaVaga(dados.descricaoDaVaga());
this.setDataDaAberturaDaVaga(dados.dataDeAberturaDaVaga());
this.setDataDeFechamentoDaVaga(dados.dataDeFechamentoDaVaga());
this.setFormacaoAcademicaNecessaria(dados.formacaoAcademica());
this.setCandidatoList(dados.candidatoList());
this.setVagaAtiva(true);
}
}
Record:
public record DadosCadastroVagasDTO(
@NotBlank
String nomeDaVaga,
@NotBlank
String descricaoDaVaga,
@NotNull
LocalDate dataDeAberturaDaVaga,
@NotNull
LocalDate dataDeFechamentoDaVaga,
@NotNull
FormacaoAcademica formacaoAcademica,
List<Candidato> candidatoList
) {
}
VagaService:
@Service
public class VagaService {
@Autowired
private VagaRepository repository;
@Transactional
public Vaga cadastrarVaga(DadosCadastroVagasDTO dados) {
var vaga = new Vaga(dados);
return repository.save(vaga);
}
}
VagaController:
@Controller
@RequestMapping("vagas")
public class VagaController {
@Autowired
private VagaService service;
@Autowired
private VagaRepository repository;
@GetMapping("/formVagas")
public String carregarFormulario(Long id, Model model) {
if (id != null) {
var vaga = repository.getReferenceById(id);
model.addAttribute("vaga",vaga);
}
return "vagas/formVagas";
}
@PostMapping
public String cadastrarVagas(@Valid DadosCadastroVagasDTO dados) {
service.cadastrarVaga(dados);
return "redirect:/vagas/formVagas";
}
}