Pessoal, tenho um metodo que salva os itens e a compra funciona perfeitamente, posso buscar itens e salvar, retirar itens e tal, porem ao salvar algum item se eu clicar no botão para realizar uma pesquisa pelo nome do produto da um erro;
Field error in object ‘compra’ on field ‘codigo’: rejected value [addItemNaCompra]; codes [typeMismatch.compra.codigo,typeMismatch.codigo,typeMismatch.java.lang.Long,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [compra.codigo,codigo]; arguments []; default message [codigo]]; default message [Failed to convert property value of type ‘java.lang.String’ to required type ‘java.lang.Long’ for property ‘codigo’; nested exception is java.lang.NumberFormatException: For input string: “addItemNaCompra”]
se eu selecionar o item fizer uma pesquisa funciona;
http://localhost:8080/compras/addItemForm/7?nome=
se salvar o item na compra e depois for pesquisar, NAO; http://localhost:8080/compras/addItemNaCompra?
nome=CANETA+BIC+SENSIVEL
@PostMapping("/addItemNaCompra")
public ModelAndView addItem(
ProdutoFilter produtoFilter,Compra compra,Produto produto,
BindingResult result, RedirectAttributes attributes) {
ModelAndView mv = new ModelAndView("academia/cadastro-compra");
compra = compraRepository.getOne(codigoCompraTemp);
quantidadeCompraTemp = produto.getQuantidadeCompraTemp();
valorCompra = produto.getValorCompraTemp();
mv.addObject(produto);
mv.addObject(compra);
Date dataAtual = new Date();
GregorianCalendar gc = new GregorianCalendar();
gc.setTime(dataAtual);
compra.setDataCompra(dataAtual);
produto = produtoRepository.findOne(codigoProdutoTemp);
produto.setQuantidadeCompraTemp(quantidadeCompraTemp);
produto.setValorCompraTemp(valorCompra);
produtoRepository.save(produto);
List<ItemCompra> listaItens = itemCompraRepository.findByCompraCodigo(codigoCompraTemp);
int achou = -1;
for (int posicao = 0; posicao < listaItens.size(); posicao++) {
if (listaItens.get(posicao).getProduto().equals(produto)) {
achou = posicao;
}
}
if (achou < 0) {
ItemCompra itemcompra = new ItemCompra();
produto = produtoRepository.findOne(codigoProdutoTemp);
Integer quantidade = produto.getQuantidadeCompraTemp();
BigDecimal valorUnit = produto.getValorCompraTemp();
BigDecimal resultado = valorUnit.multiply(BigDecimal.valueOf(quantidade.longValue()));
itemcompra.setValorUnitario(resultado);
itemcompra.setQuantidade(produto.getQuantidadeCompraTemp());
itemcompra.setProduto(produto);
itemcompra.setCompra(compra);
listaItens.add(itemcompra);
produto.setQuantidadeEstoque(produto.getQuantidadeEstoque() + produto.getQuantidadeCompraTemp());
itemCompraRepository.save(itemcompra);
somar(compra, itemcompra);
mv.addObject("mensagem", "Item inserido com sucesso.");
mv.addObject(compra);
mv.addObject("listaItens", itemCompraRepository.findByCompraCodigo(codigoCompraTemp));
} else {
ItemCompra itemCompra = listaItens.get(achou);
somar(compra, itemCompra);
mv.addObject("mensagemErro", "O mesmo item não pode ser inserido 2 vezes.");
mv.addObject(compra);
mv.addObject("listaItens", itemCompraRepository.findByCompraCodigo(codigoCompraTemp));
}
compraRepository.save(compra);
mv.addObject("listaItens", itemCompraRepository.findByCompraCodigo(codigoCompraTemp));
attributes.addFlashAttribute("mensagem", "Compra salva com sucesso!");
return mv;
}
Simplesmente ao ler a assinatura do metodo ja gera a exception.