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