Iniciante em Hibernate ERRO!

11 respostas
GabrielCardelli

Configurei meu Hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0 //EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
    <session-factory>

            <property name="hibernate.connection.driver_class">
                org.postgresql.Driver
            </property>

            <property name="hibernate.connection.url">
                jdbc:postgresql://localhost/javaHibernate
            </property>

            <property name="hibernate.connection.username">
                postgres
            </property>

            <property name="hibernate.connection.password">
                postgres
            </property>

            <property name="hibernate.dialect">
                org.hibernate.dialect.PostgreSQLDialect
            </property>

            <mapping resource="aluno.hbm.xml"/>

    </session-factory>

</hibernate-configuration>

Configurei minha tabela

<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
    <class name="Aluno" table="alunos">
        <!-- Table só é necessario se o POJO nao for = ao nome da tabela no BD -->
           <id name="alu_codigo" column="alu_codigo" type="integer"/>
           <property name="alu_nome"/>
           <property name="alu_cidade"/>
               <property name="alu_curso"/>
           <property name="alu_telefone"/>
       
    </class>
</hibernate-mapping>

Quando eu chamo minha classe GravarAluno

public class GravaAluno {

    public GravaAluno(){

    }

    public static void main(String[]args){

        try{

             SessionFactory fabrica = new Configuration().configure("hibernate.cfg.xml").buildSessionFactory();
             Session sessao = fabrica.openSession();

             Aluno aluno = new Aluno();
             aluno.setAlu_codigo(1);
             aluno.setAlu_nome("Gabriel Cardelli");
             aluno.setAlu_cidade("Rio de Janeiro");
             aluno.setAlu_telefone("2561-2976");
             aluno.setAlu_curso("SI");

             Transaction tx_aluno = sessao.beginTransaction();
             sessao.save(aluno);
             tx_aluno.commit();
             sessao.clear();
             

        }catch(Exception e){
            e.printStackTrace();
            JOptionPane.showMessageDialog(null, e.getMessage());
        }

    }

}

Quando eu compilo essa classe me vem um erro que não to conseguindo achar onde é... alguem pode medar uma ajuda?

ERRO:

18 [main] INFO org.hibernate.cfg.Environment - Hibernate 3.3.1.GA
36 [main] INFO org.hibernate.cfg.Environment - hibernate.properties not found
40 [main] INFO org.hibernate.cfg.Environment - Bytecode provider name : javassist
46 [main] INFO org.hibernate.cfg.Environment - using JDK 1.4 java.sql.Timestamp handling
134 [main] INFO org.hibernate.cfg.Configuration - configuring from resource: hibernate.cfg.xml
134 [main] INFO org.hibernate.cfg.Configuration - Configuration resource: hibernate.cfg.xml
247 [main] INFO org.hibernate.cfg.Configuration - Reading mappings from resource : aluno.hbm.xml
378 [main] INFO org.hibernate.cfg.HbmBinder - Mapping class: Aluno -> alunos
401 [main] INFO org.hibernate.cfg.Configuration - Configured SessionFactory: null
489 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - Using Hibernate built-in connection pool (not for production use!)
490 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - Hibernate connection pool size: 20
490 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - autocommit mode: false
507 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - using driver: org.postgresql.Driver at URL: jdbc:postgresql://localhost/javaHibernate
512 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - connection properties: {user=postgres, password=****}
906 [main] INFO org.hibernate.cfg.SettingsFactory - RDBMS: PostgreSQL, version: 8.4.0
906 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC driver: PostgreSQL Native Driver, version: PostgreSQL 8.4 JDBC4 (build 701)
924 [main] INFO org.hibernate.dialect.Dialect - Using dialect: org.hibernate.dialect.PostgreSQLDialect
931 [main] INFO org.hibernate.transaction.TransactionFactoryFactory - Using default transaction strategy (direct JDBC transactions)
933 [main] INFO org.hibernate.transaction.TransactionManagerLookupFactory - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
985 [main] INFO org.hibernate.cfg.SettingsFactory - Automatic flush during beforeCompletion(): disabled
986 [main] INFO org.hibernate.cfg.SettingsFactory - Automatic session close at end of transaction: disabled
986 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC batch size: 15
986 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC batch updates for versioned data: disabled
988 [main] INFO org.hibernate.cfg.SettingsFactory - Scrollable result sets: enabled
988 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC3 getGeneratedKeys(): enabled
989 [main] INFO org.hibernate.cfg.SettingsFactory - Connection release mode: auto
990 [main] INFO org.hibernate.cfg.SettingsFactory - Default batch fetch size: 1
990 [main] INFO org.hibernate.cfg.SettingsFactory - Generate SQL with comments: disabled
991 [main] INFO org.hibernate.cfg.SettingsFactory - Order SQL updates by primary key: disabled
992 [main] INFO org.hibernate.cfg.SettingsFactory - Order SQL inserts for batching: disabled
994 [main] INFO org.hibernate.cfg.SettingsFactory - Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
998 [main] INFO org.hibernate.hql.ast.ASTQueryTranslatorFactory - Using ASTQueryTranslatorFactory
999 [main] INFO org.hibernate.cfg.SettingsFactory - Query language substitutions: {}
999 [main] INFO org.hibernate.cfg.SettingsFactory - JPA-QL strict compliance: disabled
1000 [main] INFO org.hibernate.cfg.SettingsFactory - Second-level cache: enabled
1000 [main] INFO org.hibernate.cfg.SettingsFactory - Query cache: disabled
1000 [main] INFO org.hibernate.cfg.SettingsFactory - Cache region factory : org.hibernate.cache.impl.NoCachingRegionFactory
1001 [main] INFO org.hibernate.cfg.SettingsFactory - Optimize cache for minimal puts: disabled
1002 [main] INFO org.hibernate.cfg.SettingsFactory - Structured second-level cache entries: disabled
1006 [main] INFO org.hibernate.cfg.SettingsFactory - Statistics: disabled
1008 [main] INFO org.hibernate.cfg.SettingsFactory - Deleted entity synthetic identifier rollback: disabled
1009 [main] INFO org.hibernate.cfg.SettingsFactory - Default entity-mode: pojo
1009 [main] INFO org.hibernate.cfg.SettingsFactory - Named query checking : enabled
1082 [main] INFO org.hibernate.impl.SessionFactoryImpl - building session factory
1354 [main] INFO org.hibernate.impl.SessionFactoryObjectFactory - Not binding factory to JNDI, no JNDI name configured
1490 [main] WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: 0, SQLState: 42P01
1491 [main] ERROR org.hibernate.util.JDBCExceptionReporter - Entrada em lote 0 insert into alunos (alu_nome, alu_cidade, alu_curso, alu_telefone, alu_codigo) values ('Gabriel Cardelli', 'Rio de Janeiro', 'SI', '2561-2976', '1') foi abortada. Chame getNextException para ver a causa.
1492 [main] WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: 0, SQLState: 42P01
1493 [main] ERROR org.hibernate.util.JDBCExceptionReporter - ERRO: relação "alunos" não existe
  Posição: 13
1494 [main] ERROR org.hibernate.event.def.AbstractFlushingEventListener - Could not synchronize database state with session
org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update
        at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:90)
        at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
        at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:275)
        at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:266)
        at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:167)
        at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
        at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50)
        at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1027)
        at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:365)
        at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:137)
        at GravaAluno.main(GravaAluno.java:28)
Caused by: java.sql.BatchUpdateException: Entrada em lote 0 insert into alunos (alu_nome, alu_cidade, alu_curso, alu_telefone, alu_codigo) values ('Gabriel Cardelli', 'Rio de Janeiro', 'SI', '2561-2976', '1') foi abortada. Chame getNextException para ver a causa.
        at org.postgresql.jdbc2.AbstractJdbc2Statement$BatchResultHandler.handleError(AbstractJdbc2Statement.java:2569)
        at org.postgresql.core.v3.QueryExecutorImpl$1.handleError(QueryExecutorImpl.java:459)
        at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1796)
        at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:407)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:2708)
        at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
        at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)
        ... 8 more
org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update
        at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:90)
        at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
        at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:275)
        at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:266)
        at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:167)
        at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
        at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50)
        at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1027)
        at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:365)
        at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:137)
        at GravaAluno.main(GravaAluno.java:28)
Caused by: java.sql.BatchUpdateException: Entrada em lote 0 insert into alunos (alu_nome, alu_cidade, alu_curso, alu_telefone, alu_codigo) values ('Gabriel Cardelli', 'Rio de Janeiro', 'SI', '2561-2976', '1') foi abortada. Chame getNextException para ver a causa.
        at org.postgresql.jdbc2.AbstractJdbc2Statement$BatchResultHandler.handleError(AbstractJdbc2Statement.java:2569)
        at org.postgresql.core.v3.QueryExecutorImpl$1.handleError(QueryExecutorImpl.java:459)
        at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1796)
        at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:407)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:2708)
        at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
        at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)
        ... 8 more

Galera quem puder ajudar agradeço!

PS: Eu tenho um Banco javaHibernate e uma tabela alunos.

11 Respostas

danieldomingues86

Ola Gabriel, lembra de mim ae ? rsrsr :slight_smile:

Entao olha eu nao manjo muito de hibernate ainda, estou comecando a estudar mais acho que sei onde esta o erro.

Veja essas linhas :

<property name="alu nome"/>   
           <property name="alu cidade"/>   
               <property name="alu curso"/>   
           <property name="alu_telefone"/>

Voce nao pode colocar espacos nos property names, nem ai e nem nas colunas na tabela do banco , que nem ta ai “alu nome”, “alu cidade”, “alu curso”.

Bem espero que seja isso e tenha ajudado, rsrs.
Flw.

GabrielCardelli

valeu mano!!

No meu arquivo está com os _

Foi erro aqui na hora de exibir isso msm!

Continuo na msm…

Abraço obrg

GabrielCardelli

Vejo que ele gera a Query certinha mais deve está dando um erro de tipos…

Caused by: java.sql.BatchUpdateException: Entrada em lote 0 insert into Aluno (alu_nome, alu_cidade, alu_curso, alu_telefone, alu_codigo) values ('Gabriel', 'Rio', 'Sistemas', '25612976', '2') foi abortada. Chame getNextException para ver a causa.
:x

EDIT_________________

INSTALEI O MYSQL E RODOU DE BOA :cry: porque será que deu merda?

zoren

Sua chave primária está mapeada??

Andre_Brito

Você não tinha o banco instalado?! Sem banco não vai mesmo cara hehe. Acho que você deve ter escrito isso errado.

Você primeiro cria o banco:

mysql -u root create database teste;
Depois só abre uma Session (acho que é, eu uso EntityManager) que, dependendo de como estiver configurado o valor do seu hbm2dll.auto no persistence.xml ele vai criar as tabelas. Posso ter falado caca, mas é a única coisa que me pareceu sensata.

danieldomingues86

rsrs Essa foi boa :slight_smile: , o kra tinha o banco sim mais tava usando o PostgreSQL nao eh verdade? :slight_smile:

Entao mas como voce fez o teste no mysql e rodou (voce fez o teste diretamente no mysql ou usando Hibernate ?) , estranho, pois o Hibernate gera o sql independente do banco que voce esteja usando.

Se voce fez o teste diretamente no banco digo fazendo uma query no mysql (insert into…) tente trocar o banco na sua aplicacao e em vez de usar PostgreSQL usa Mysql e ve se funciona. Pode estar dando alguma incompaibilidade mesmo.

Flw.

DiegoMau

énecessario definir se o id vai ser auto increment

ou se vai ser informado pelo usuario

GabrielCardelli

Eu tinha o postgre que dava erro…
Botei o Mysql e rodou…

Tem algo a ver com os tipos será ?

E

No mapeamento da sua tabela você deve colocar alunos dentro de aspas simples seguido por aspas duplas para poder usar o postgreSQL.
Assim -> table=’“alunos”’.
flw, espero ter ajudado

K

Tem fazer o seguinte, coloca isso no lugar do id no mapeamento.

<id name="alu_codigo" column="alu_codigo" type="integer"/>  
      <generator class="sequence">   
         <param name="sequence">SEQ_ALUNO</param>  
      </generator> 
</id>

e cria uma sequence no banco com o nome SEQ_ALUNO.

  • Com o postgres.
leoramos

Nas configurações do Hibernate, qual o dialect que tu selecionou?
Tem isso tb, mestre…

Criado 2 de setembro de 2009
Ultima resposta 14 de jul. de 2011
Respostas 11
Participantes 8