Não estou conseguindo encontrar o erro, acredito que seja no lombok por nao estar gerando os metodos como devia, mas já tentei mudar no arquivo pom e reiniciar a aplica,ão e o erro permance. Minha classe de pagamento:`
import jakarta.persistence.*;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Positive;
import jakarta.validation.constraints.Size;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.math.BigDecimal;
@Entity
@Table(name = "pagamentos")
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class Pagamento {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotNull
@Positive
private BigDecimal valor;
@NotBlank
@Size(max=100)
private String nome;
@NotBlank
@Size(max = 19)
private String numero;
@NotBlank
@Size(max=7)
private String expiracao;
@NotBlank
@Size(min=3, max=3)
private String codigo;
@NotNull
@Enumerated(EnumType.STRING)
private Status status;
@NotNull
private Long pedidoId;
@NotNull
private Long formaDePagamentoId;
}
A classe de pagamentoDTO:
package br.com.alurafood.pagamentos.dto;
import br.com.alurafood.pagamentos.model.Status;
import lombok.Getter;
import lombok.Setter;
import java.math.BigDecimal;
@Getter
@Setter
public class PagamentoDTO {
private Long id;
private BigDecimal valor;
private String nome;
private String numero;
private String expiracao;
private String codigo;
private Status status;
private Long formaDePagamentoId;
private Long pedidoId;
}
A classe controller:
package br.com.alurafood.pagamentos.controller;
import br.com.alurafood.pagamentos.dto.PagamentoDTO;
import br.com.alurafood.pagamentos.service.PagamentoService;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.web.PageableDefault;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.util.UriComponentsBuilder;
import java.net.URI;
@RestController
@RequestMapping("/pagamentos")
public class PagamentoController {
@Autowired
private PagamentoService service;
@GetMapping
public Page<PagamentoDTO> listar(@PageableDefault(size = 10) Pageable paginacao) {
return service.obterTodos(paginacao);
}
@GetMapping("/{id}")
public ResponseEntity<PagamentoDTO> detalhar(@PathVariable @NotNull Long id) {
PagamentoDTO dto = service.obterPorId(id);
return ResponseEntity.ok(dto);
}
@PostMapping
public ResponseEntity<PagamentoDTO> cadastrar(@RequestBody @Valid PagamentoDTO dto, UriComponentsBuilder uriBuilder) {
PagamentoDTO pagamento = service.criarPagamento(dto);
URI endereco = uriBuilder.path("/pagamentos/{id}").buildAndExpand(pagamento.getId()).toUri();
return ResponseEntity.created(endereco).body(pagamento);
}
@PutMapping("/{id}")
public ResponseEntity<PagamentoDTO> atualizar(@PathVariable @NotNull Long id, @RequestBody @Valid PagamentoDTO dto) {
PagamentoDTO atualizado = service.atualizarPagamento(id, dto);
return ResponseEntity.ok(atualizado);
}
@DeleteMapping("/{id}")
public ResponseEntity<PagamentoDTO> remover(@PathVariable @NotNull Long id) {
service.excluirPagamento(id);
return ResponseEntity.noContent().build();
}
}
Além disso, porque utilizamos class no DTO ao invés de um record?