Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dica de verificação antes de salvar

Bom dia professor

Tenho o seguinte codigo:

 public Fuel convert(PostRepository postRepository) {
        Post post = postRepository.findByName(namePost);
        if (post != null) {
            return new Fuel(name, price, date, post);
        }

como pode ver, quando vou salvar um combustível, eu busco um posto pelo nome. Eu queria verificar antes se ele encontrou um posto com o nome passado, se ele encontrou beleza ele retorna o combustível e depois salva.

Se não encontrar, eu queria fazer algo como retornar uma exception, dizendo que não achou o posto.

To com duvida por que esse método tem que retornar um combustível, como posso fazer esse tratamento da melhor forma?

2 respostas
solução!

Eu consideraria utilizar o Optional introduzido no java 8.

Primeiramente alterar o retorno do método "findByName()" do postRepository para retornar um Optional, ex (supondo que esta usando Spring Data extendendo JpaRepository):

Optional<Post> findByName(String name);

E então fazer a implementação:

 public Fuel convert(PostRepository postRepository) {
        Post post = postRepository.findByName(namePost).orElseThrow(() -> new RuntimeException("Posto não encontrado!"));
        return new Fuel(name, price, date, post);
  }

Obviamente que você pode substituir a Exception lançada para uma criada por você.

Opa Leandro, Cara muito obrigado pela dica, como estava precisando resolver isso logo, eu fiz a mesma coisa porem buscando pelo id do posto. findById, Assim eu tenho o orElseThrow() e consigo lançar a exception caso ele nao encontre.

Eu montei uma exception personalizada. Por enquanto isso me atende, mas vou guardar aqui esse modelo que pode me ajudar mais tarde Brigadão

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software