ola pessoal
estou com um probleminha ao salvar “itens”… eis as linhas de cod…
no DAOItens
private static EntityManagerFactory emf = Persistence.createEntityManagerFactory("projetoPU");
public void salvarItens(Itens itens){
if (!em.isOpen()) {
em = emf.createEntityManager();
}
em.getTransaction().begin();
try {
em.persist(itens);
em.getTransaction().commit();
JOptionPane.showMessageDialog(null,"Itens salvo com sucesso!","Aviso",JOptionPane.INFORMATION_MESSAGE);
} catch (Exception e) {
JOptionPane.showMessageDialog(null,"Erro ao salvar o itens","Atenção!",JOptionPane.ERROR_MESSAGE);
e.printStackTrace();
em.getTransaction().rollback();
} finally {
em.close();
}
}
no botao
int linhas = dtmitens.getRowCount();
Itens itens = new Itens();
for (int i = 0; i < linhas; i++) {
int codigoProduto = Integer.parseInt(String.valueOf(dtmitens.getValueAt(i,0)));
Produto produto = daoProduto.buscaPorCodigo(codigoProduto);
itens.setPrecoTotal(Float.parseFloat(String.valueOf(dtmitens.getValueAt(i,5))));
itens.setPrecoUnitario(Float.parseFloat(String.valueOf(dtmitens.getValueAt(i,4))));
itens.setQuantidade(Integer.parseInt(String.valueOf(dtmitens.getValueAt(i,2))));
itens.setVenda(venda);
itens.setProduto(produto);
daoItens.salvarItens(itens);
}
o erro…
init:
deps-jar:
compile:
run:
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).
log4j:WARN Please initialize the log4j system properly.
javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: org.iVitrim.model.Itens
at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:630)
at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:219)
at org.iVitrim.dao.DAOItens.salvarItens(DAOItens.java:41)
at org.iVitrim.telas.Vendas.jbtEfetuarVendaActionPerformed(Vendas.java:684)
at org.iVitrim.telas.Vendas.access$1300(Vendas.java:29)
at org.iVitrim.telas.Vendas$16.actionPerformed(Vendas.java:487)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6038)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5803)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4410)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2429)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
Caused by: org.hibernate.PersistentObjectException: detached entity passed to persist: org.iVitrim.model.Itens
at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:79)
at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:38)
at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:618)
at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:592)
at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:596)
at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:213)
... 29 more
situacao:
eu uso uma tabela para mostrar os itens;
por exemplo 3 itens estao na tabela,
dae o dtmitens.getrowcount() pega a quantidades de itens a serem adicionados, “contruindo” o for…
na primeira vez que passa pelo for… ele salva tdo certinho… aparece o “salvo itens com sucesso” mas na segunda vez por diante ja da erro, e na tabela do banco aparece soh a venda e um item
tvz seja problema no salvaItens(), ou no botao… mas nao sei o que eh…
se alguem puder me auxiliar…
grato