카테고리 없음

내부 서버 오류-주어진 ID는 null이 아니어야합니다.

기록만이살길 2021. 2. 23. 14:04
반응형

내부 서버 오류-주어진 ID는 null이 아니어야합니다.

1. 질문(문제점):

지금은이 문제가 내가 도움을 요청하고 싶은, 내가 테 값을 ACESS 수 없습니다 dto.getIdCliente(), 그러나 이것은을 위해 JSON처럼 전달됩니다 ServicoPrestadoDTO dto. 아래 코드 ...

ServicoPrestadoController.java :

@RestController
@RequestMapping("/api/servicos-prestados")
@RequiredArgsConstructor
public class ServicoPrestadoController {

    private final ClienteRepository clienteRepository;
    private final ServicoPrestadoRepository servicoPrestadoRepository;
    private final BigDecimalConverter bigDecimalConverter;

    @PostMapping
    @ResponseStatus(HttpStatus.CREATED)
    public ServicoPrestado salvar(@RequestBody ServicoPrestadoDTO dto){
        LocalDate data = LocalDate.parse(dto.getData(), DateTimeFormatter.ofPattern("dd/MM/yyyy"));
        Integer idCliente = dto.getIdCLiente();

        Cliente cliente =
                clienteRepository.findById(idCliente)
                        .orElseThrow(() ->
                                new ResponseStatusException(
                                        HttpStatus.NOT_FOUND, "Cliente não encontrado!"));

        ServicoPrestado servicoPrestado = new ServicoPrestado();
        servicoPrestado.setDescricao(dto.getDescricao());
        servicoPrestado.setData(data);
        servicoPrestado.setCliente(cliente);
        servicoPrestado.setValor(bigDecimalConverter.converter(dto.getPreco()));

        return servicoPrestado;
    }

    @GetMapping
    public List<ServicoPrestado> pesquisar(
            @RequestParam(value = "nome", required = false) String nome,
            @RequestParam(value = "mes", required = false) Integer mes
    ){
        return servicoPrestadoRepository.findByNomeClienteAndMes("%" + nome + "%", mes);
    }

}

ServicoPrestadoDTO.java :

@Data
@NoArgsConstructor
public class ServicoPrestadoDTO {
    private String descricao;
    private String preco;
    private String data;
    private Integer idCLiente;
}

ServicoPrestado.java :

@Entity
@Data
public class ServicoPrestado {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @Column(nullable = false, length = 150)
    private String descricao;

    @ManyToOne
    @JoinColumn(name = "id_cliente")
    private Cliente cliente;

    @Column
    private BigDecimal valor;

    @Column
    @JsonFormat(pattern = "dd/MM/yyyy")
    private LocalDate data;
}

나는 왜 servicoservico-prestado-form.ts같은 JSON으로 보내지 않는지 이해하지 못합니다 .

2. 해결방안:

귀하의 ServicoPrestadoDTO클래스는 필드가 idCLiente아닌 idCliente(당신은 대문자 "L"이).

올바른 대 / 소문자로 변경해보십시오 idCliente.

그것은 당신을 위해 그것을 고쳐 줍니까?

65834370
반응형