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:
public class HibernateTeste {
private static final SessionFactory sessionFactory;
static {
sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
[/code]
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.
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)
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;
}
}
[quote=drsmachado]Então este erro se refere à esta sequence
sequenceName = "cod_cliente_seq"
Talvez não exista no Postgres[/quote]
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.