Eu adiciono os itens na venda mas não consigo atualizar a quantidade do produto no banco. Eu já pesquisei na net e não achei solução. Abaixo está o método que executa a sql:
publicvoidatualizarQuantidade(Integerid,Integerquantidade){Stringsql="update Produto p set p.quantidade = p.quantidade - :novaQuantidade where id =:codigo";HibernateUtil.session.openSession().clear();HibernateUtil.session.openSession().createQuery(sql).setInteger("novaQuantidade",quantidade).setInteger("codigo",id).executeUpdate();}
Dê mais detalhes para que a gente consiga te ajudar…
V
ViniciusGallo
Não dá erro, só que o update não altera a quantidade do produto.
Rafael_Guerreiro
Ta. Faz assim:
publicvoidatualizarQuantidade(Integerid,Integerquantidade){Sessionsession=HibernateUtil.session.openSession();Transactiontx=session.beginTransaction();try{Stringsql="update Produto p set p.quantidade = p.quantidade - :novaQuantidade where id =:codigo";session.createQuery(sql).setInteger("novaQuantidade",quantidade).setInteger("codigo",id).executeUpdate();tx.commit();session.close();}catch(HibernateExceptione){tx.rollback();session.close();throwe;}}
V
ViniciusGallo
Deu certo, mas demora para executar qual o motivo que pode ser?
Rafael_Guerreiro
Existem vários motivos, mas eu não sei como está todo o ambiente ai para isso.
De qualquer forma, utilizar HibernateUtils.session é um dos motivos.
V
ViniciusGallo
Tem outra solução então?
Rafael_Guerreiro
Tem. Mas você precisa me dar mais detalhes. Isso é uma aplicação web? Está usando algum framework MVC?
V
ViniciusGallo
É uma aplicação web com jsf + hibernate + jpa + primefaces + postgres. Tenho um pacote de modelo, controller e dao.
Rafael_Guerreiro
Então procure sobre injeção de dependências no JSF.
A ideia é que você não precise se preocupar em abrir e fechar session.
Procure também sobre como configurar pool de conexões. Assim ele já vai abrindo as conexões para você usar.
V
ViniciusGallo
Ok. Obrigado pela ajuda.
V
ViniciusGallo
Eu sei que esse tópico não é sobre esse assunto mas estou com uma dificuldade de atualizar um dialog através de um botão que está em outro dialog como faço para saber o caminho correto?