Erro com hibernate!

bom dia

Ola Pessoal,

estou com um pequeno problema, e como sou iniciante estou me perdendo.

o problema é o seguinte: estou com uma aplicação swing e quando chamo o tento da insert com hibernate da um erro, porem se vou em uma classe simples com main chmao o mesmo metodo e nao tem problema nenhum.

codigo sem erro:

Session session = HibernateUtil.getInstance().getSession();
Usuario usr = new Usuario();
//usr.setId(9);
usr.setNome(“JOSE”);
usr.setTipo(“ADM”);
usr.setLogin(“jose”);
usr.setSenha(“teste”);
usr.setAtivo(1);
session.save(usr);
session.beginTransaction().commit();
session.close();

codigo com erro:

Session session = HibernateUtil.getInstance().getSession();
Usuario usr = new Usuario();

    usr.setNome(jtfNome.getText().trim());
    usr.setTipo(jcbTipo.getSelectedItem().toString().trim());
    usr.setLogin(jtfLogin.getText().trim());
    usr.setSenha(jpfSenha.getText().trim());
    if (jcbAtivo.isSelected()){
        usr.setAtivo(1);
    } else {
        usr.setAtivo(0);
    }

    if (verificaCampos() && verificaSenha() == true){
        session.save(usr);
        session.getTransaction().commit();
        session.close();
    }

Erro:

Hibernate:
insert
into
usuario
(ativo, login, nome, senha, tipo, id)
values
(?, ?, ?, ?, ?, ?)
Exception in thread “AWT-EventQueue-0” org.hibernate.exception.DataException: Could not execute JDBC batch update
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:77)

Caused by: java.sql.BatchUpdateException: Entrada em lote 0 insert into usuario (ativo, login, nome, senha, tipo, id) values (‘1’, ‘jose’, ‘JOSE’, ‘12’, ‘Item 1’, ‘66’) foi abortada. Chame getNextException para ver a causa.
at org.postgresql.jdbc2.AbstractJdbc2Statement$BatchResultHandler.handleError(AbstractJdbc2Statement.java:2621)

tentei mas nada, procurei muito antes de perguntar no forum.

grato

Com certeza algo no banco de dados falhou. Alguma constraint.
Por favor, pegue o erro no log do PostgreSQL e poste para nós!

Att,

Edu, so ocorre o erro quando chamo pela aplicação swing, quando faço o teste em uma classe simples so com main persiste os dados sem problemas.

att
Cícero Gomes

Read more: http://javafree.uol.com.br/topic-890697-Erro-com-hibernate-quando-insert-pelo-swing.html#ixzz2U8a1yh2R

Amigo, pode até ser que esteja relacionado com alguma interação com a View. Mas de qualquer forma, esse erro que você postou aconteceu diretamente no banco de dados, possívelmente em razão de algum valor foi ou não foi informado, etc etc.

Se você postar a Stack Trace integral, ou os logs do banco de dados, será mais fácil investigar.

run:
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Hibernate:
select
nextval (‘usuario_id_seq’)
Hibernate:
insert
into
usuario
(ativo, login, nome, senha, tipo, id)
values
(?, ?, ?, ?, ?, ?)
Exception in thread “AWT-EventQueue-0” org.hibernate.exception.DataException: Could not execute JDBC batch update
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:77)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:253)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:237)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:141)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
at br.com.vertical.view.FormUsuario.novoUsuario(FormUsuario.java:401)
at br.com.vertical.view.FormUsuario.jbtSalvarActionPerformed(FormUsuario.java:426)
at br.com.vertical.view.FormUsuario.access$600(FormUsuario.java:25)
at br.com.vertical.view.FormUsuario$6.actionPerformed(FormUsuario.java:168)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:729)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:688)
at java.awt.EventQueue$3.run(EventQueue.java:686)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:702)
at java.awt.EventQueue$4.run(EventQueue.java:700)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:699)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:154)
at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:182)
at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:221)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:219)
at java.awt.Dialog.show(Dialog.java:1082)
at java.awt.Component.show(Component.java:1651)
at java.awt.Component.setVisible(Component.java:1603)
at java.awt.Window.setVisible(Window.java:1014)
at java.awt.Dialog.setVisible(Dialog.java:1005)
at br.com.vertical.view.FormUsuario$7.run(FormUsuario.java:469)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:727)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:688)
at java.awt.EventQueue$3.run(EventQueue.java:686)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:697)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Caused by: java.sql.BatchUpdateException: Entrada em lote 0 insert into usuario (ativo, login, nome, senha, tipo, id) values (‘1’, ‘maria’, ‘MARIA’, ‘123’, ‘Item 1’, ‘68’) foi abortada. Chame getNextException para ver a causa.
at org.postgresql.jdbc2.AbstractJdbc2Statement$BatchResultHandler.handleError(AbstractJdbc2Statement.java:2621)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1837)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:407)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:2754)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:246)
… 68 more

MEU METODO

public void novoUsuario(){
    Session session = HibernateUtil.getInstance().getSession();
    Usuario usr = new Usuario();

    usr.setNome(jtfNome.getText().trim());
    usr.setTipo(jcbTipo.getSelectedItem().toString());
    usr.setLogin(jtfLogin.getText().trim());
    usr.setSenha(jpfSenha.getText().trim());
    if (jcbAtivo.isSelected()){
        usr.setAtivo(1);
    } else {
        usr.setAtivo(0);
    }

    if (checaCampos() && checaSenha() == true){
        session.save(usr);
        session.getTransaction().commit();
        session.close();
    }
                              
}

MINHA CLASSE ANOTADA

@Entity
@Table(name=“usuario”)
public class Usuario implements Serializable {

private static final long serialVersionUID = 1L;

@Id
@SequenceGenerator(name="id", sequenceName="usuario_id_seq", allocationSize=1)
@GeneratedValue(strategy= GenerationType.SEQUENCE, generator="id") //para postgre e oracle
@Column(name="id", nullable = false)
private Integer id;
@Column(name="nome", nullable = false)
private String nome;
@Column(name="tipo", nullable = false)
private String tipo;
@Column(name="login", nullable = false)
private String login;
@Column(name="senha", nullable = false)
private String senha;
@Column(name="ativo")
private Integer ativo;

gets e sets

Ainda assim a mensagem de erro do banco não veio no stack trace.

Abra um console no banco de dados, usando seu software preferido, o o PSQL nativo, e rode esta query:

Foi o que o Hibernate tentou fazer quando deu erro. O Banco vai reportar o problema.

muito obrigado

nao estava vendo o que estava bem diante dos olhos.

grato

Beleza! espero ter ajudado…