Estou com uma dúvida referente a baixa no estoque.
Seguinte, eu tenho no meu formulário de venda uma Jtable que recebe todos os produtos que o cliente deseja comprar, por fim salvo todos os dados no banco. Com isso gostaria que cada produto vendido, que dê uma baixa direto na tabela de produto especificamente na quantidade. Estou usando hibernate, só que estou com dúvida como fazer este upadete no hibernate.
Espero que fui claro na minha explicação, mas qualquer coisa estou a deposição e desde já agradeço pela atenção.
Alguém pode-me ajudar, estou precisando muito galera.
vlw
H
henriquejhc
Uma possibilidade...
publicvoidsaveVenda(VendaJBvenda){
this.manager=MeuEntityManager.getEntityManager();ProdutoJBbaixar; List<ItemJB>litens=venda.getItens(); // minha lista de itens this.manager.getTransaction().begin();try{
for(ItemJBitem:litens){baixar=this.manager.find(ProdutoJB.class,item.getProduto().getCodProduto()); // faço uma busca pelo id do produto que será alterado.baixar.setQuantidadeLoja(baixar.getQuantidadeLoja()-item.getQuantidadeItem()); // faço a subtração this.manager.merge(baixar); }
this.manager.merge(venda);this.manager.getTransaction().commit();}catch(Exceptione){
this.manager.getTransaction().rollback();e.printStackTrace();}
}
Lags
henriquejhc,
O que vai fazer this.manager = MeuEntityManager.getEntityManager();
Sabe sou iniciante em java, porém tem algumas coisas que não conheço ainda, mesmo assim pesquisei não achei nada que explica ele.
H
henriquejhc
Você ustá usando hibernate ou jpa?
Esse MeuEntityManager.getEntityManager(); é onde estou pegando uma instância do meu Singleton.
Exemplo simples:
importjavax.persistence.EntityManager;importjavax.persistence.EntityManagerFactory;importjavax.persistence.Persistence;publicclassMeuEntityManager{publicstaticStringDEFAULT_UNIT_NAME="NomeDoSeuPersistenceUnit";privatestaticEntityManagerFactoryemf=null;publicstaticEntityManagergetEntityManager(){if(emf==null){System.out.println("Criando o EntityManagerFactory");init();System.out.println("EntityManagerFactory Criado");}returnemf.createEntityManager();}privatestaticvoidinit(){emf=Persistence.createEntityManagerFactory(DEFAULT_UNIT_NAME);}..........}
Para você utilizar…
publicvoidsave(Objectobject){
EntityManagermanager=MeuEntityManage.getEntityManager(); // pego a instância do meu EntityManagermanager.getTransaction().begin(); // abro a transaçãotry{
manager.persist(object); // persisto o objetomanager.getTransaction().commit(); // comito }catch(Exceptione){manager.getTransaction().rollback(); // caso ocorra algum erro faço o rollback e.printStackTrace(); }
}
Lags
Estou usando a Hibernate!
R
RafaelViana
Lags:
henriquejhc,
O que vai fazer this.manager = MeuEntityManager.getEntityManager();
Sabe sou iniciante em java, porém tem algumas coisas que não conheço ainda, mesmo assim pesquisei não achei nada que explica ele.
Sinceramente,
Como você está fazendo JDBC, Hibernate?
-> Quando você realizar a venda vai ter quantos produtos de cada foram vendidos
-> Então você abre conexão com o banco e vai retirar essas quantidades do estoque
Apenas isso.
Agora saber como ir até o banco e retirar essas quantidades já é outra história (JDBC ou Hibernate)
H
henriquejhc
Te aconselharia dar uma estuda sobre jpa.
Tem algum conhecimento em abrir uma session no hibernate? As configurações estão prontas?
Lags
Já tenho toda configuração da Hibernate e DAO, só é como usar método UPdate da Hibernate