Pessoal estou comum problema.. tenho o seguinte codigo para salvar um esquema no banco:
if (tbProtocoloBean.getCdProtocolo() != null) {
Conexao.beginTransacao();
try {
DocumentoFACADE documentoFacade = new DocumentoFACADE();
tbDocumentoBean.setCdProtocolo(tbProtocoloBean);
documentoFacade.salvarEditarDocumento(tbDocumentoBean, "Usuario");
Conexao.commitTransacao();
habilitaDesabilitaFormDocumento();
Binding bindingDocumentos = bindingGroup.getBinding("bindingDocumentosProtocolo");
bindingDocumentos.unbind();
TbDocumento documentoAdicionado = new TbDocumento();
propBean.copyProperties(documentoAdicionado, tbDocumentoBean);
if (documentoAnterior != null) {
tbDocumentoList.remove(documentoAnterior);
tbProtocoloBean.getTbDocumentoCollection().remove(documentoAdicionado);
}
tbDocumentoList.add(documentoAdicionado);
tbProtocoloBean.getTbDocumentoCollection().add(documentoAdicionado);
this.totalDocumentos = tbDocumentoList.size() - 1;
this.documentoAtual = totalDocumentos;
bindingDocumentos.bind();
jbtEditarDocumento.setEnabled(!(jbtEditarDocumento.isEnabled()));
jbtNovoDocumento.setEnabled(!(jbtNovoDocumento.isEnabled()));
jbtCancelarDocumento.setEnabled(!(jbtCancelarDocumento.isEnabled()));
jbtSalvarDocumento.setEnabled(!(jbtSalvarDocumento.isEnabled()));
selecionarDocumentoProtocolo(this.documentoAtual);
verificaBotoesNavegadorDocumentos();
documentoAnterior = null;
} catch (Exception e) {
e.printStackTrace();
Conexao.rollbackTransacao();
}
} else {
JOptionPane.showMessageDialog(null, "Protocolo não finalizado", "ATENÇÃO", JOptionPane.INFORMATION_MESSAGE);
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package br.com.dnasolution.dao;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.FlushModeType;
import javax.persistence.Persistence;
/**
*
* @author Administrador
*/
public class Conexao {
private static Conexao instancia;
private static EntityManagerFactory emf;
private static final String NOMEPU = "NotasPU";
public static EntityManager SESSION;
public static synchronized void conectar(){
/* Mudar o direcionamento do banco (IP)
Map propertiesMap = new HashMap();
propertiesMap.put(TopLinkProperties.JDBC_URL, "jdbc:postgresql://localhost:5432/db_dnaso");
emf = Persistence.createEntityManagerFactory("NotasPU",propertiesMap);*/
if (emf == null) {
emf = Persistence.createEntityManagerFactory(NOMEPU);
}
}
public static Conexao getInstance() {
if (instancia == null) {
instancia = new Conexao();
}
return instancia;
}
public static EntityManager getCurrentEM() {
if (SESSION == null) {
conectar();
SESSION = emf.createEntityManager();
SESSION.setFlushMode(FlushModeType.COMMIT);
}
return SESSION;
}
public static void fecharConexao() {
if (SESSION != null) {
SESSION.close();
}
}
public static void beginTransacao(){
SESSION.getTransaction().begin();
}
public static void commitTransacao(){
SESSION.getTransaction().commit();
}
public static void rollbackTransacao(){
SESSION.getTransaction().rollback();
}
}
[TopLink Warning]: 2008.10.10 04:41:53.906--UnitOfWork(30385106)--Exception [TOPLINK-7251] (Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.ValidationException Exception Description: The attribute [cdDocumento] of class [br.com.dnasolution.entity.TbDocumento] is mapped to a primary key column in the database. Updates are not allowed. javax.persistence.RollbackException: Exception [TOPLINK-7251] (Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.ValidationException Exception Description: The attribute [cdDocumento] of class [br.com.dnasolution.entity.TbDocumento] is mapped to a primary key column in the database. Updates are not allowed. at oracle.toplink.essentials.internal.ejb.cmp3.transaction.base.EntityTransactionImpl.commit(EntityTransactionImpl.java:120) at oracle.toplink.essentials.internal.ejb.cmp3.transaction.EntityTransactionImpl.commit(EntityTransactionImpl.java:60) at br.com.dnasolution.dao.Conexao.commitTransacao(Conexao.java:65) at br.com.dnasolution.gui.GerenciarProtocoloJF.jbtSalvarDocumento(GerenciarProtocoloJF.java:1328) at br.com.dnasolution.gui.GerenciarProtocoloJF.access$2200(GerenciarProtocoloJF.java:36) at br.com.dnasolution.gui.GerenciarProtocoloJF$17.actionPerformed(GerenciarProtocoloJF.java:746) 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.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272) 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: Exception [TOPLINK-7251] (Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.ValidationException Exception Description: The attribute [cdDocumento] of class [br.com.dnasolution.entity.TbDocumento] is mapped to a primary key column in the database. Updates are not allowed. at oracle.toplink.essentials.exceptions.ValidationException.primaryKeyUpdateDisallowed(ValidationException.java:2222) at oracle.toplink.essentials.mappings.foundation.AbstractDirectMapping.writeFromObjectIntoRowWithChangeRecord(AbstractDirectMapping.java:750) at oracle.toplink.essentials.internal.descriptors.ObjectBuilder.buildRowForUpdateWithChangeSet(ObjectBuilder.java:948) at oracle.toplink.essentials.internal.queryframework.DatabaseQueryMechanism.updateObjectForWriteWithChangeSet(DatabaseQueryMechanism.java:1263) at oracle.toplink.essentials.queryframework.WriteObjectQuery.executeCommitWithChangeSet(WriteObjectQuery.java:150) at oracle.toplink.essentials.internal.queryframework.DatabaseQueryMechanism.executeWriteWithChangeSet(DatabaseQueryMechanism.java:390) at oracle.toplink.essentials.queryframework.WriteObjectQuery.executeDatabaseQuery(WriteObjectQuery.java:109) at oracle.toplink.essentials.queryframework.DatabaseQuery.execute(DatabaseQuery.java:628) at oracle.toplink.essentials.queryframework.DatabaseQuery.executeInUnitOfWork(DatabaseQuery.java:555) at oracle.toplink.essentials.queryframework.ObjectLevelModifyQuery.executeInUnitOfWorkObjectLevelModifyQuery(ObjectLevelModifyQuery.java:138) at oracle.toplink.essentials.queryframework.ObjectLevelModifyQuery.executeInUnitOfWork(ObjectLevelModifyQuery.java:110) at oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2233) at oracle.toplink.essentials.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:952) at oracle.toplink.essentials.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:909) at oracle.toplink.essentials.mappings.ObjectReferenceMapping.insert(ObjectReferenceMapping.java:826) at oracle.toplink.essentials.mappings.ObjectReferenceMapping.preInsert(ObjectReferenceMapping.java:451) at oracle.toplink.essentials.descriptors.DescriptorQueryManager.preInsert(DescriptorQueryManager.java:892) at oracle.toplink.essentials.internal.queryframework.DatabaseQueryMechanism.insertObjectForWrite(DatabaseQueryMechanism.java:521) at oracle.toplink.essentials.queryframework.InsertObjectQuery.executeCommit(InsertObjectQuery.java:89) at oracle.toplink.essentials.internal.queryframework.DatabaseQueryMechanism.performUserDefinedWrite(DatabaseQueryMechanism.java:750) at oracle.toplink.essentials.internal.queryframework.DatabaseQueryMechanism.performUserDefinedInsert(DatabaseQueryMechanism.java:714) at oracle.toplink.essentials.internal.queryframework.DatabaseQueryMechanism.insertObjectForWriteWithChangeSet(DatabaseQueryMechanism.java:602) at oracle.toplink.essentials.queryframework.WriteObjectQuery.executeCommitWithChangeSet(WriteObjectQuery.java:162) at oracle.toplink.essentials.internal.queryframework.DatabaseQueryMechanism.executeWriteWithChangeSet(DatabaseQueryMechanism.java:390) at oracle.toplink.essentials.queryframework.WriteObjectQuery.executeDatabaseQuery(WriteObjectQuery.java:109) at oracle.toplink.essentials.queryframework.DatabaseQuery.execute(DatabaseQuery.java:628) at oracle.toplink.essentials.queryframework.DatabaseQuery.executeInUnitOfWork(DatabaseQuery.java:555) at oracle.toplink.essentials.queryframework.ObjectLevelModifyQuery.executeInUnitOfWorkObjectLevelModifyQuery(ObjectLevelModifyQuery.java:138) at oracle.toplink.essentials.queryframework.ObjectLevelModifyQuery.executeInUnitOfWork(ObjectLevelModifyQuery.java:110) at oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2233) at oracle.toplink.essentials.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:952) at oracle.toplink.essentials.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:909) at oracle.toplink.essentials.internal.sessions.CommitManager.commitNewObjectsForClassWithChangeSet(CommitManager.java:269) at oracle.toplink.essentials.internal.sessions.CommitManager.commitAllObjectsForClassWithChangeSet(CommitManager.java:246) at oracle.toplink.essentials.internal.sessions.CommitManager.commitAllObjectsWithChangeSet(CommitManager.java:202) at oracle.toplink.essentials.internal.sessions.AbstractSession.writeAllObjectsWithChangeSet(AbstractSession.java:2657) at oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.commitToDatabase(UnitOfWorkImpl.java:1044) at oracle.toplink.essentials.internal.ejb.cmp3.base.RepeatableWriteUnitOfWork.commitToDatabase(RepeatableWriteUnitOfWork.java:403) at oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.commitToDatabaseWithChangeSet(UnitOfWorkImpl.java:1126) at oracle.toplink.essentials.internal.ejb.cmp3.base.RepeatableWriteUnitOfWork.commitRootUnitOfWork(RepeatableWriteUnitOfWork.java:107) at oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.commitAndResume(UnitOfWorkImpl.java:856) at oracle.toplink.essentials.internal.ejb.cmp3.transaction.base.EntityTransactionImpl.commit(EntityTransactionImpl.java:102) ... 31 more Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: Exception Description: No transaction is currently active at oracle.toplink.essentials.internal.ejb.cmp3.transaction.base.EntityTransactionImpl.rollback(EntityTransactionImpl.java:140) at br.com.dnasolution.dao.Conexao.rollbackTransacao(Conexao.java:69) at br.com.dnasolution.gui.GerenciarProtocoloJF.jbtSalvarDocumento(GerenciarProtocoloJF.java:1358) at br.com.dnasolution.gui.GerenciarProtocoloJF.access$2200(GerenciarProtocoloJF.java:36) at br.com.dnasolution.gui.GerenciarProtocoloJF$17.actionPerformed(GerenciarProtocoloJF.java:746) 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.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272) 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)segue o meu codigo do metodo editarSalvarDocumento
public void salvarEditarDocumento(TbDocumento tbDocumentoBean, String usuario) throws Exception {
if(tbDocumentoBean.getCdDocumento() == null){
documentoDAO.persist(tbDocumentoBean);
documentoAndamentoFacade.salvarAndamento(tbDocumentoBean,"ENTRADA",usuario);
}else{
documentoDAO.update(tbDocumentoBean);
}
}
public void salvarAndamento(TbDocumento tbDocumentoBean, String andamento, String usuario) throws Exception {
TbDocumentoAndamento documentoAndamento = new TbDocumentoAndamento();
documentoAndamento.setCdDocumento(tbDocumentoBean);
documentoAndamento.setDtAndamento(new Date());
documentoAndamento.setHrAndamento(new Date());
documentoAndamento.setNmAndamento(andamento);
documentoAndamento.setNmUsuarioAndamento(usuario);
documentoAndamentoDAO.persist(documentoAndamento);
tbDocumentoBean.getTbDocumentoAndamentoCollection().add(documentoAndamento);
}
alguem pode me ajudar??
valeu