Erro Banco de Dados Postgre

6 respostas
R

Olá sou iniciante em Java. Estou tentando salvar no meu banco de dados Postgre e na hora de salvar o Netbeans retorna o seguinte erro:

org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update

Alguem poderia me ajudar, analisei a Classe de Controle onde ele retorna o erro, dá um erro na hora de inserir.

O erro é o seguinte:

Message:

util.dao.DAOException: org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update

Level:

SEVERE

Stack Trace:

org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update

util.dao.DAO.insert(DAO.java:45)

fronteira.planoContas.CTRLPlanoContas.salvar(CTRLPlanoContas.java:51)

fronteira.planoContas.JPlanoContas.BttSalvarActionPerformed(JPlanoContas.java:528)

fronteira.planoContas.JPlanoContas.access$300(JPlanoContas.java:27)

fronteira.planoContas.JPlanoContas$2.actionPerformed(JPlanoContas.java:143)

javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)

javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)

javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)

javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)

javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)

java.awt.Component.processMouseEvent(Component.java:6263)

javax.swing.JComponent.processMouseEvent(JComponent.java:3255)

java.awt.Component.processEvent(Component.java:6028)

java.awt.Container.processEvent(Container.java:2041)

java.awt.Component.dispatchEventImpl(Component.java:4630)

java.awt.Container.dispatchEventImpl(Container.java:2099)

java.awt.Component.dispatchEvent(Component.java:4460)

java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)

java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)

java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)

java.awt.Container.dispatchEventImpl(Container.java:2085)

java.awt.Window.dispatchEventImpl(Window.java:2475)

java.awt.Component.dispatchEvent(Component.java:4460)

java.awt.EventQueue.dispatchEvent(EventQueue.java:599)

java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)

java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)

java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)

java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)

java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)

java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Could not execute JDBC batch update

org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:94)

org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)

org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:275)

org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:266)

org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:167)

org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)

org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50)

org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1028)

org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:366)

org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:137)

util.dao.DAO.insert(DAO.java:41)

fronteira.planoContas.CTRLPlanoContas.salvar(CTRLPlanoContas.java:51)

fronteira.planoContas.JPlanoContas.BttSalvarActionPerformed(JPlanoContas.java:528)

fronteira.planoContas.JPlanoContas.access$300(JPlanoContas.java:27)

fronteira.planoContas.JPlanoContas$2.actionPerformed(JPlanoContas.java:143)

javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)

javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)

javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)

javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)

javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)

java.awt.Component.processMouseEvent(Component.java:6263)

javax.swing.JComponent.processMouseEvent(JComponent.java:3255)

java.awt.Component.processEvent(Component.java:6028)

java.awt.Container.processEvent(Container.java:2041)

java.awt.Component.dispatchEventImpl(Component.java:4630)

java.awt.Container.dispatchEventImpl(Container.java:2099)

java.awt.Component.dispatchEvent(Component.java:4460)

java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)

java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)

java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)

java.awt.Container.dispatchEventImpl(Container.java:2085)

java.awt.Window.dispatchEventImpl(Window.java:2475)

java.awt.Component.dispatchEvent(Component.java:4460)

java.awt.EventQueue.dispatchEvent(EventQueue.java:599)

java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)

java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)

java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)

java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)

java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)

java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Entrada em lote 0 insert into planocontas (codigoidentificador_planocontas, descricao_planocontas, nivel_planocontas, despesa_planocontas, tipo_planocontas, excluido_planocontas, datacadastro_planocontas, dataalteracao_planocontas, codigo_planocontaspai, usuario_cadastro, codigo_planocontas) values (4.3, TS, NULL, 1, D, 0, 2011-04-04 09:22:01.895000 -03:00:00, NULL, 82, 21, 31) foi abortada. Chame getNextException para ver a causa.

org.postgresql.jdbc2.AbstractJdbc2Statement$BatchResultHandler.handleError(AbstractJdbc2Statement.java:2569)

org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1796)

org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:407)

org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:2708)

org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)

org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)

org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:266)

org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:167)

org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)

org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50)

org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1028)

org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:366)

org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:137)

util.dao.DAO.insert(DAO.java:41)

fronteira.planoContas.CTRLPlanoContas.salvar(CTRLPlanoContas.java:51)

fronteira.planoContas.JPlanoContas.BttSalvarActionPerformed(JPlanoContas.java:528)

fronteira.planoContas.JPlanoContas.access$300(JPlanoContas.java:27)

fronteira.planoContas.JPlanoContas$2.actionPerformed(JPlanoContas.java:143)

javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)

javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)

javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)

javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)

javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)

java.awt.Component.processMouseEvent(Component.java:6263)

javax.swing.JComponent.processMouseEvent(JComponent.java:3255)

java.awt.Component.processEvent(Component.java:6028)

java.awt.Container.processEvent(Container.java:2041)

java.awt.Component.dispatchEventImpl(Component.java:4630)

java.awt.Container.dispatchEventImpl(Container.java:2099)

java.awt.Component.dispatchEvent(Component.java:4460)

java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)

java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)

java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)

java.awt.Container.dispatchEventImpl(Container.java:2085)

java.awt.Window.dispatchEventImpl(Window.java:2475)

java.awt.Component.dispatchEvent(Component.java:4460)

java.awt.EventQueue.dispatchEvent(EventQueue.java:599)

java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)

java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)

java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)

java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)

java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)

java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

6 Respostas

kiq095

coloca seu codigo ai … ou tenta explicar melhor …!!

por q somente pelo erro assim e meio dificio te ajudar … ok

valeuuuuuuuu…!!!

kiq095

Mais pelo visto acho q e a vc nao improtou as bibliotecas de seu banco pra seu projeto .!!
ou ele nao esta reconhcendo as bibliotecas …!!!

mais coloca o codigo ai … assim fica melhor

R

Minha classe é a Classe JPlanoContas

private void BttSalvarActionPerformed(java.awt.event.ActionEvent evt) {

if (jTabbedPane1.getSelectedIndex() == 0) {

if (CbTipo.getSelectedIndex() == 0) {

Mensagem.mensagemErro(Informe o tipo);

} else if (CbDespesa.getSelectedIndex() == 0) {

Mensagem.mensagemErro(Informe a despesa);

} else if (CbTipoDespesa.getSelectedIndex() == 0) {

Mensagem.mensagemErro(Informe o tipo de despesa);

} else {

if (TxtDescricao.getText() != null && !TxtDescricao.getText().equals("")) {

try {

control.salvar(null);

Mensagem.mensagemSucesso(Salvo com sucesso);

carregarPlanos();

} catch (DAOException ex) {

Mensagem.mensagemErro(Erro ao salvar, ex);

}

}else{

Mensagem.mensagemErro(Digite a descrição para prosseguir);

}

}

} else if (jTabbedPane1.getSelectedIndex() == 2) {

int opcao = Mensagem.mensagemConfirm(Deseja realmente modificar as configurações?”);

if (opcao == Mensagem.YES_OPTION) {

try {

control.salvarPadrao();

Mensagem.mensagemSucesso(Padrões salvos com sucesso);

carregarPlanos();

} catch (DAOException ex) {

Mensagem.mensagemErro(Erro ao salvar, ex);

}

}

}

}
R

Como disse sou iniciante no Java, mas dentro da tela de erro ele apresenta a seguinte informação:

Entrada em lote 0 insert into planocontas (codigoidentificador_planocontas, descricao_planocontas, nivel_planocontas, despesa_planocontas, tipo_planocontas, excluido_planocontas, datacadastro_planocontas, dataalteracao_planocontas, codigo_planocontaspai, usuario_cadastro, codigo_planocontas) values (‘4.3’, ‘DSDSDSD’, NULL, ‘1’, ‘D’, ‘0’, ‘2011-04-04 09:24:16.643000 -03:00:00’, NULL, ‘82’, ‘21’, ‘32’) foi abortada. Chame getNextException para ver a causa.

Ou seja o problema seria no meu insert, por algum motivo ele não ta inserindo no banco de dados. Apos fazer os IF da classe acima, verificando se os campos da despeda, tipo foram preeenchidos ele retorna a mensagem de salvo, mas ele ta chamando o DAOException e retornando o erro, porem o que eu não entendi é que todos os campos que solicitam o preenchimento foram preenchidos, executei passo a passo pra ve ele ele estava verificando.
Ele vai direto para o DAOException retornando asim o erro.

fabiomedeirosf

Você está tentando inserir um registro já existente no banco que tem restrição de unicidade, logo o erro de violação de constraint.

Veja os dados que estao sendo montados na sua instrução e sql, e compare com os pre-exsistentes no banco.

R

Na verdade estou tentando inserir um registro novo no banco, mas vou olhar o sql.Quando tento inserir um registro igual, ele não deixa…devido a restrição. Já olhei na tabela que recebem os dados e não há esse mesmo registro, provavelmente seja alguma linha sql…

Criado 4 de abril de 2011
Ultima resposta 4 de abr. de 2011
Respostas 6
Participantes 3