Erro - SLF4J [RESOLVIDO]

11 respostas
F

Gente, estou com um problema pra conectar com o banco de dados (postgresql) usando hibernate e annotations...
As classes estão mapeadas, e quando eu vou testar dá o seguinte erro:

SLF4J: This version of SLF4J requires log4j version 1.2.12 or later. See also http://www.slf4j.org/codes.html#log4j_version
Initial SessionFactory creation failed.java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;[Ljava/lang/Object;Ljava/lang/Throwable;)V
Exception in thread "main" java.lang.ExceptionInInitializerError
at dao.HibernateUtil.(HibernateUtil.java:16)
at dao.Teste.main(Teste.java:11)
Caused by: java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;[Ljava/lang/Object;Ljava/lang/Throwable;)V
at org.apache.commons.logging.impl.SLF4JLocationAwareLog.info(SLF4JLocationAwareLog.java:159)
at org.hibernate.cfg.annotations.Version.(Version.java:15)
at org.hibernate.cfg.AnnotationConfiguration.(AnnotationConfiguration.java:56)
at dao.HibernateUtil.(HibernateUtil.java:12)
... 1 more
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 2 segundos)

Classe de Teste que peguei num exemplo na internet:

package dao;

import modelo.Cliente;
import org.hibernate.Session;
import org.hibernate.Transaction;
      
public class Teste {
    
    public static void main(String[] args) {
        
        Session sessao = HibernateTeste.getSessionFactory().openSession();
        Transaction t = sessao.beginTransaction();
        Cliente cliente = new Cliente();
        cliente.setNome("William");
        cliente.setCidade("São José dos campos");
        cliente.setEstado("SP");
        sessao.save(cliente);
        t.commit();
        sessao.close();
        
    }
}

HibernateUtil:

package dao;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

public class HibernateTeste {
   private static final SessionFactory sessionFactory;
   static {
      sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
   }
  
   public static SessionFactory getSessionFactory() {
      return sessionFactory;
   }
}

Alguém tem idéia do que seja?Já cacei na interent inteira. Até aparecem algumas outras pessoas com o mesmo problema, mas nenhum resolvido.

11 Respostas

D

Camarada, tenta baixar a versão mais recente do hibernate.

F

Nada resolvido. Peguei o 4.0, mas não funcionou.
Erro:

run: SLF4J: This version of SLF4J requires log4j version 1.2.12 or later. See also http://www.slf4j.org/codes.html#log4j_version Initial SessionFactory creation failed.java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;[Ljava/lang/Object;Ljava/lang/Throwable;)V Exception in thread "main" java.lang.ExceptionInInitializerError at dao.HibernateUtil.<clinit>(HibernateUtil.java:16) at dao.Teste.main(Teste.java:11) Caused by: java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;[Ljava/lang/Object;Ljava/lang/Throwable;)V Java Result: 1 CONSTRUÍDO COM SUCESSO (tempo total: 8 segundos) at org.apache.commons.logging.impl.SLF4JLocationAwareLog.info(SLF4JLocationAwareLog.java:159)

D

Posta aí a lista de jars que você possui.

M

verifique a versao do jar log4j, segundo a mensagem de erro vc tem que usar uma versao igual ou superior a 1.2.12

F

Jars:
Lib PostgreSQL JDBC Driver
slf4j-api-1.6.1
slf4j-simple-1.6.1
hibernate-core-4.0.0.beta
hibernate-commons-annotations
ejb3-persistence

Entre outras, mas acho que essas são as envolvidas.

Agora deu outro erro:

run: 3 [main] INFO org.hibernate.annotations.common.Version - Hibernate Commons Annotations 3.2.0.Final 06/07/2011 20:39:43 org.hibernate.internal.CoreMessageLogger_$logger version INFO: HHH00412:Hibernate [WORKING] 06/07/2011 20:39:43 org.hibernate.internal.CoreMessageLogger_$logger propertiesNotFound INFO: HHH00206:hibernate.properties not found 06/07/2011 20:39:43 org.hibernate.internal.CoreMessageLogger_$logger bytecodeProvider INFO: HHH00021:Bytecode provider name : javassist 06/07/2011 20:39:43 org.hibernate.internal.CoreMessageLogger_$logger configuringFromResource INFO: HHH00043:Configuring from resource: /hibernate.cfg.xml 06/07/2011 20:39:43 org.hibernate.internal.CoreMessageLogger_$logger configurationResource INFO: HHH00040:Configuration resource: /hibernate.cfg.xml 06/07/2011 20:39:43 org.hibernate.internal.CoreMessageLogger_$logger recognizedObsoleteHibernateNamespace WARN: HHH00223:Recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide! 06/07/2011 20:39:43 org.hibernate.internal.CoreMessageLogger_$logger configuredSessionFactory INFO: HHH00041:Configured SessionFactory: null 06/07/2011 20:39:43 org.hibernate.internal.CoreMessageLogger_$logger usingHibernateBuiltInConnectionPool INFO: HHH00402:Using Hibernate built-in connection pool (not for production use!) 06/07/2011 20:39:43 org.hibernate.internal.CoreMessageLogger_$logger hibernateConnectionPoolSize INFO: HHH00115:Hibernate connection pool size: 20 06/07/2011 20:39:43 org.hibernate.internal.CoreMessageLogger_$logger autoCommitMode INFO: HHH00006:Autocommit mode: false 06/07/2011 20:39:43 org.hibernate.internal.CoreMessageLogger_$logger usingDriver INFO: HHH00401:using driver [org.postgresql.Driver] at URL [jdbc:postgresql://localhost:5432/postgres] 06/07/2011 20:39:43 org.hibernate.internal.CoreMessageLogger_$logger connectionProperties INFO: HHH00046:Connection properties: {user=postgres, password=****} 06/07/2011 20:39:44 org.hibernate.internal.CoreMessageLogger_$logger usingDialect INFO: HHH00400:Using dialect: org.hibernate.dialect.PostgreSQLDialect 06/07/2011 20:39:44 org.hibernate.internal.CoreMessageLogger_$logger disablingContextualLOBCreationSinceOldJdbcVersion INFO: HHH00423:Disabling contextual LOB creation as JDBC driver reported JDBC version [3] less than 4 06/07/2011 20:39:44 org.hibernate.internal.CoreMessageLogger_$logger usingDefaultTransactionStrategy INFO: HHH00399:Using default transaction strategy (direct JDBC transactions) 06/07/2011 20:39:44 org.hibernate.internal.CoreMessageLogger_$logger usingAstQueryTranslatorFactory INFO: HHH00397:Using ASTQueryTranslatorFactory 06/07/2011 20:39:45 org.hibernate.internal.CoreMessageLogger_$logger warn WARN: SQL Error: 0, SQLState: 42P01 06/07/2011 20:39:45 org.hibernate.internal.CoreMessageLogger_$logger error ERROR: ERRO: relação "cod_cliente_seq" não existe Exception in thread "main" org.hibernate.exception.SQLGrammarException: ERRO: relação "cod_cliente_seq" não existe at org.hibernate.exception.internal.SQLStateConverter.convert(SQLStateConverter.java:100) at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:124) at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:109) at org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:131) at org.hibernate.engine.jdbc.internal.proxy.AbstractProxyHandler.invoke(AbstractProxyHandler.java:80) at $Proxy11.executeQuery(Unknown Source) at org.hibernate.id.SequenceGenerator.generateHolder(SequenceGenerator.java:110) at org.hibernate.id.SequenceHiLoGenerator.generate(SequenceHiLoGenerator.java:76) at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:121) at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:202) at org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:55) at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:187) at org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:49) at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:89) at org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:736) at org.hibernate.internal.SessionImpl.save(SessionImpl.java:729) at org.hibernate.internal.SessionImpl.save(SessionImpl.java:725) at dao.Teste.main(Teste.java:17) Caused by: org.postgresql.util.PSQLException: ERRO: relação "cod_cliente_seq" não existe at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1592) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1327) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:192) at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:451) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:350) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:254) 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.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:124) ... 14 more Java Result: 1 CONSTRUÍDO COM SUCESSO (tempo total: 3 segundos)

Classe Cliente:

package modelo;

import java.io.Serializable;
import javax.persistence.*;
import org.hibernate.annotations.GenericGenerator;

/*
 * @author André Mazoni Wanderley
 */

@Entity
public class Cliente implements Serializable {
    
    private String nome, end, bairro, cidade, estado, CEP, tel, fax, email, contato;
    private int id_cliente;
    
    @Id
    @SequenceGenerator( name = "cod_cliente", sequenceName = "cod_cliente_seq", allocationSize = 1)
    @GeneratedValue( strategy = GenerationType.SEQUENCE, generator = "cod_cliente")
    @Column(name = "CLIENTE_ID")
    public int getId_cliente() {
        return id_cliente;
    }

    public void setId_cliente(int id_cliente) {
        this.id_cliente = id_cliente;
    }
    
    @Column(name = "CEP")
    public String getCEP() {
        return CEP;
    }

    public void setCEP(String CEP) {
        this.CEP = CEP;
    }

    @Column(name = "BAIRRO")
    public String getBairro() {
        return bairro;
    }

    public void setBairro(String bairro) {
        this.bairro = bairro;
    }

    @Column(name = "CIDADE")
    public String getCidade() {
        return cidade;
    }

    public void setCidade(String cidade) {
        this.cidade = cidade;
    }

    @Column(name = "EMAIL")
    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Column(name = "ENDERECO")
    public String getEnd() {
        return end;
    }

    public void setEnd(String end) {
        this.end = end;
    }

    @Column(name = "ESTADO")
    public String getEstado() {
        return estado;
    }

    public void setEstado(String estado) {
        this.estado = estado;
    }

    @Column(name = "FAX")
    public String getFax() {
        return fax;
    }

    public void setFax(String fax) {
        this.fax = fax;
    }

    @Column(name = "NOME")
    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    @Column(name = "TELEFONE")
    public String getTel() {
        return tel;
    }

    public void setTel(String tel) {
        this.tel = tel;
    }

    @Column(name = "CONTATO")
    public String getContato() {
        return contato;
    }

    public void setContato(String contato) {
        this.contato = contato;
    }
    
    
    
}

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="connection.url">jdbc:postgresql://localhost:5432/postgres</property> <property name="connection.driver_class">org.postgresql.Driver</property> <property name="connection.username">postgres</property> <property name="connection.password">post</property> <property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property> <mapping class="modelo.Cliente"/> <mapping class="modelo.Codigo"/> <mapping class="modelo.Conta"/> <mapping class="modelo.Contrato"/> <mapping class="modelo.Empenho"/> <mapping class="modelo.Equipamento"/> <mapping class="modelo.Favorecido"/> <mapping class="modelo.MaoObra"/> <mapping class="modelo.Material"/> <mapping class="modelo.MovimentoFinanceiro"/> <mapping class="modelo.Obra"/> <mapping class="modelo.Usuario"/> </session-factory> </hibernate-configuration>

D

Então este erro se refere à esta sequence

sequenceName = "cod_cliente_seq"

Talvez não exista no Postgres

F

drsmachado:
Então este erro se refere à esta sequence

sequenceName = "cod_cliente_seq"

Talvez não exista no Postgres


Então quando eu ponho o GeneratedValue desta forma já tenho que ter criado isso no banco? Ele não gera automaticamente?
Antes eu tinha colocado “AUTO” no lugar de SEQUENCE, mas dava erro e dizia que “hibernate_sequence” não existia.

D

Então, não sou muito bom em postgres, mas todas as vezes que usei eu criei na mão as sequences (também, uma única linha no pgadmin é tranquilo).

F

OK. Criando a sequência e as tabelas na mão funcionou. Obrigado.
Agora vou ver se consigo fazer com que as tabelas sejam geradas automaticamente.

F

OK. Tudo resolvido, obrigado!!
Geração de tabelas está automática e funcionando!

D

Beleza camarada, então edita o tópico original e coloca [resolvido] no título

Criado 5 de julho de 2011
Ultima resposta 8 de jul. de 2011
Respostas 11
Participantes 3