Boa tarde! Pessoal, estou com um probleminha aqui, quando faço alguma alteração no nome do produto ou na descrição tudo certo, mas quando tento alterar o preço do produto da uma Exception. Alguém ja passou por isso?
public class ProdutoFrame extends JFrame {
private static final long serialVersionUID = 1L;
botaoEditar.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
alterar();
limparTabela();
preencherTabela();
}
});
}
private void alterar() {
Object objetoDaLinha = (Object) modelo.getValueAt(tabela.getSelectedRow(), 0);
if (objetoDaLinha instanceof Long) {
Long id = (Long) objetoDaLinha;
String nome = (String) modelo.getValueAt(tabela.getSelectedRow(), 1);
String descricao = (String) modelo.getValueAt(tabela.getSelectedRow(), 2);
BigDecimal preco = (BigDecimal) modelo.getValueAt(tabela.getSelectedRow(), 3); // A EXCEPTION APARECE NESTA LINHA
this.produtoController.alterar(nome, descricao, preco, id);
} else {
JOptionPane.showMessageDialog(this, "Por favor, selecionar o ID");
}
}
public class ProdutoController {
public void alterar(String nome, String descricao, BigDecimal preco, Long id) {
EntityManager em = JPAUtil.getEntityManager();
Produto produto = em.createQuery("SELECT p FROM Produto p WHERE p.id = :id", Produto.class)
.setParameter("id", id).getSingleResult();
ProdutoDao produtoDao = new ProdutoDao(em);
em.getTransaction().begin();
produto.setNome(nome);
produto.setDescricao(descricao);
produto.setPreco(preco);
produtoDao.atualizarProduto(produto);
em.getTransaction().commit();
em.close();
System.out.println("Alterando produto: " + id);
}
}
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: class java.lang.String cannot be cast to class java.math.BigDecimal (java.lang.String and java.math.BigDecimal are in module java.base of loader 'bootstrap')
at br.com.alura.loja.view.ProdutoFrame.alterar(ProdutoFrame.java:193)
at br.com.alura.loja.view.ProdutoFrame$4.actionPerformed(ProdutoFrame.java:176)