Está encontrando o driver, está conectando ao banco de dados e consequentemente o banco está startado.
Veja classe abaixo:
public class ClienteDAO {
public ClienteDAO(){
}
public boolean incluirCliente(Cliente cliente){
Session sessao = HibernateUtility.getSession(); //Abrindo uma sessão
//Session sessao = HibernateSessionFactory.getSession();
Transaction transacao = sessao.beginTransaction(); //Iniciando uma transação
try{
sessao.save(cliente); //Transformando um objeto transiente em um objeto persistente no bd.
transacao.commit(); //Finalizando a transação
sessao.close(); //fechando a sessão.
return true;
} catch (HibernateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
// transacao.rollback(); //Cancela operação no BD
// sessao.close(); //Fecha sessão.
return false;
}
}
}
A mensagem de erro aparece na linha onde tem o transacao.commit(); //Finalizando a transação
.
Acredito que possa ser algum problema de configuração, mas o que?
Olhe a classe abaixo:public class HibernateUtility {
private static SessionFactory factory;
static {
try {
factory = new Configuration().configure("hibernate.cfg.xml").buildSessionFactory();
} catch (Exception e) {
e.printStackTrace();
factory = null;
}
}
public static Session getSession() {
return factory.openSession();
}
}
Observe o hbm de minha classe:<?xml version="1.0" encoding="UTF-8"?>
<!-- Hibernate XML Mapping File -->
<!-- Author: Leandro -->
<!-- Modified: sábado, 8 de março de 2008 01:51:19 -->
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping auto-import="true" package="alphalabprototipo.src" schema="ALPHALAB">
<class name="Cliente" mutable="true" dynamic-update="false" dynamic-insert="false" select-before-update="false" lazy="true" abstract="false">
<id name="idcliente">
<column name="idcliente" sql-type="INT4" not-null="true" length="4"/>
</id>
<property name="endpais" insert="true" update="true" lazy="false" optimistic-lock="true">
<column name="endpais" sql-type="VARCHAR(254)" length="254"/>
</property>
<property name="endcep" insert="true" update="true" lazy="false" optimistic-lock="true">
<column name="endcep" sql-type="VARCHAR(254)" length="254"/>
</property>
<property name="endestado" insert="true" update="true" lazy="false" optimistic-lock="true">
<column name="endestado" sql-type="VARCHAR(254)" length="254"/>
</property>
<property name="endcidade" insert="true" update="true" lazy="false" optimistic-lock="true">
<column name="endcidade" sql-type="VARCHAR(254)" length="254"/>
</property>
<property name="endbairro" insert="true" update="true" lazy="false" optimistic-lock="true">
<column name="endbairro" sql-type="VARCHAR(254)" length="254"/>
</property>
<property name="endlogradouro" insert="true" update="true" lazy="false" optimistic-lock="true">
<column name="endlogradouro" sql-type="VARCHAR(254)" length="254"/>
</property>
<property name="email" insert="true" update="true" lazy="false" optimistic-lock="true">
<column name="email" sql-type="VARCHAR(254)" length="254"/>
</property>
<property name="datacadastro" insert="true" update="true" lazy="false" optimistic-lock="true">
<column name="datacadastro" sql-type="DATE" not-null="true"/>
</property>
<property name="telefonefax" insert="true" update="true" lazy="false" optimistic-lock="true">
<column name="telefonefax" sql-type="VARCHAR(254)" length="254"/>
</property>
<property name="telefonefixo" insert="true" update="true" lazy="false" optimistic-lock="true">
<column name="telefonefixo" sql-type="VARCHAR(254)" not-null="true" length="254"/>
</property>
<property name="datafundacao" insert="true" update="true" lazy="false" optimistic-lock="true">
<column name="datafundacao" sql-type="DATE"/>
</property>
<property name="ie" insert="true" update="true" lazy="false" optimistic-lock="true">
<column name="ie" sql-type="VARCHAR(254)" length="254"/>
</property>
<property name="cnpj" insert="true" update="true" lazy="false" optimistic-lock="true">
<column name="cnpj" sql-type="VARCHAR(254)" not-null="true" length="254"/>
</property>
<property name="nomefantasia" insert="true" update="true" lazy="false" optimistic-lock="true">
<column name="nomefantasia" sql-type="VARCHAR(254)" not-null="true" length="254"/>
</property>
<property name="razaosocial" insert="true" update="true" lazy="false" optimistic-lock="true">
<column name="razaosocial" sql-type="VARCHAR(254)" not-null="true" length="254"/>
</property>
</class>
</hibernate-mapping>
Eu estou aprendendo a trabalhar com Hibernate agora. Estou estudando e pelo que já vi até agora, não consegui corrigir o problema não. Veja abaixo, toda a mensagem de erro que ocorre:
Hibernate: /* insert alphalabprototipo.src.Cliente */ insert into ALPHALAB.Cliente (endpais, endcep, endestado, endcidade, endbairro, endlogradouro, email, datacadastro, telefonefax, telefonefixo, datafundacao, ie, cnpj, nomefantasia, razaosocial, idcliente) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
org.hibernate.exception.GenericJDBCException: Could not execute JDBC batch update
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:82)
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:70)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:181)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:226)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:136)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:274)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:730)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:324)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:86)
at alphalabprototipo.DAO.ClienteDAO.incluirCliente(ClienteDAO.java:36)
at alphalabprototipo.view.formCadCliente.cadastrarCliente(formCadCliente.java:495)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.jdesktop.application.ApplicationAction.noProxyActionPerformed(ApplicationAction.java:662)
at org.jdesktop.application.ApplicationAction.actionPerformed(ApplicationAction.java:698)
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: java.sql.BatchUpdateException: Entrada em lote 0 /* insert alphalabprototipo.src.Cliente */ insert into ALPHALAB.Cliente (endpais, endcep, endestado, endcidade, endbairro, endlogradouro, email, datacadastro, telefonefax, telefonefixo, datafundacao, ie, cnpj, nomefantasia, razaosocial, idcliente) values (BRASIL, 74655190, GO, GOIÂNIA, CRIMEIA LESTE, RUA CEL. VICENTE SANCHES, leandro_os@yahoo.com.br, 2008-03-09 01:29:03.843000 -03:00:00, 32031963, 92096069, 2008-03-09 01:29:03.843000 -03:00:00, ISENTO, 33638032000176, NOME FANTASIA, RAZAO SOCIAL, 0) foi abortada. Chame getNextException para ver a causa.
at org.postgresql.jdbc2.AbstractJdbc2Statement$BatchResultHandler.handleError(AbstractJdbc2Statement.java:2534)
at org.postgresql.core.v3.QueryExecutorImpl$1.handleError(QueryExecutorImpl.java:404)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1328)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:352)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:2596)
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeBatch(NewProxyPreparedStatement.java:1723)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:57)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:174)
... 41 more
Alguém pode me ajudar?
Abraços. Obrigado.