Bom dia, pessoal estou com um problema e não consigo resolver.
Bom eu criei um projetinho jsf com hibernate e mysql, funcionou perfeitamente, então resolvi migrar esse projeto, usando o postgreSQL,
Porem estou recebendo uma mensagem de erro.
Aqui é meu hibernate.cfg.xml
[code]<?xml version='1.0' encoding='utf-8'?>
org.postgresql.Driver
jdbc:postgresql://localhost:5433/login
postgres
160406
org.hibernate.dialect.PostgreSQLDialect
thread
update
<mapping class="com.br.joaoleno.usuario.Usuario"></mapping>
[/code]
Alguem poderia me ajudar a solucionar esse problema?
estou tendo o seguinte erro.
09/07/2012 16:29:27 org.apache.catalina.core.StandardContext filterStart
SEVERE: Exception starting filter HibernateFilter
java.lang.ExceptionInInitializerError
at com.br.joaoleno.util.HibernateUtil.buildSessionFactory(HibernateUtil.java:30)
at com.br.joaoleno.util.HibernateUtil.<clinit>(HibernateUtil.java:17)
at com.br.joaoleno.web.filter.HibernateSessionRequestFilter.init(HibernateSessionRequestFilter.java:22)
at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:273)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:254)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:372)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:98)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4584)
at org.apache.catalina.core.StandardContext$2.call(StandardContext.java:5262)
at org.apache.catalina.core.StandardContext$2.call(StandardContext.java:5257)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.AbstractMethodError: org.postgresql.jdbc2.Jdbc2DatabaseMetaData.getJDBCMajorVersion()I
at org.hibernate.engine.jdbc.JdbcSupportLoader.useContextualLobCreation(JdbcSupportLoader.java:78)
at org.hibernate.engine.jdbc.JdbcSupportLoader.loadJdbcSupport(JdbcSupportLoader.java:52)
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:121)
at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2163)
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2159)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1383)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:954)
at com.br.joaoleno.util.HibernateUtil.buildSessionFactory(HibernateUtil.java:25)
... 14 more
informações do apache
[code]09/07/2012 16:29:27 org.apache.catalina.core.StandardContext filterStart
SEVERE: Exception starting filter HibernateFilter
java.lang.ExceptionInInitializerError
at com.br.joaoleno.util.HibernateUtil.buildSessionFactory(HibernateUtil.java:30)
at com.br.joaoleno.util.HibernateUtil.(HibernateUtil.java:17)
at com.br.joaoleno.web.filter.HibernateSessionRequestFilter.init(HibernateSessionRequestFilter.java:22)
at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:273)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:254)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:372)
at org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:98)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4584)
at org.apache.catalina.core.StandardContext$2.call(StandardContext.java:5262)
at org.apache.catalina.core.StandardContext$2.call(StandardContext.java:5257)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.AbstractMethodError: org.postgresql.jdbc2.Jdbc2DatabaseMetaData.getJDBCMajorVersion()I
at org.hibernate.engine.jdbc.JdbcSupportLoader.useContextualLobCreation(JdbcSupportLoader.java:78)
at org.hibernate.engine.jdbc.JdbcSupportLoader.loadJdbcSupport(JdbcSupportLoader.java:52)
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:121)
at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2163)
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2159)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1383)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:954)
at com.br.joaoleno.util.HibernateUtil.buildSessionFactory(HibernateUtil.java:25)
… 14 more
informações do apache
view plaincopy to clipboardprint?
66111 [Finalizer] INFO org.hibernate.connection.DriverManagerConnectionProvider - cleaning up connection pool: jdbc:postgresql://localhost:5433/login
09/07/2012 16:29:24 org.apache.catalina.util.LifecycleBase stop
INFO: The stop() method was called on component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/Cad]] after stop() had already been called. The second call will be ignored.
09/07/2012 16:29:24 org.apache.catalina.startup.HostConfig checkResources
INFO: Undeploying context [/Cad]
09/07/2012 16:29:25 org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor Cad.xml from C:\Users\Joao Leno\.netbeans\7.1.2\apache-tomcat-7.0.22.0_base\conf\Catalina\localhost
09/07/2012 16:29:26 com.sun.faces.config.ConfigureListener contextInitialized
INFO: Inicializando Mojarra 2.1.1 (FCS 20110408) para o contexto '/Cad'
09/07/2012 16:29:26 com.sun.faces.spi.InjectionProviderFactory createInstance
INFO: JSF1048: Anotações PostConstruct/PreDestroy presentes. Os métodos ManagedBeans marcados com essas anotações informarão as anotações processadas.
2 [Thread-19] INFO org.hibernate.cfg.annotations.Version - Hibernate Annotations 3.5.2-Final
12 [Thread-19] INFO org.hibernate.cfg.Environment - Hibernate 3.5.2-Final
13 [Thread-19] INFO org.hibernate.cfg.Environment - hibernate.properties not found
15 [Thread-19] INFO org.hibernate.cfg.Environment - Bytecode provider name : javassist
17 [Thread-19] INFO org.hibernate.cfg.Environment - using JDK 1.4 java.sql.Timestamp handling
89 [Thread-19] INFO org.hibernate.annotations.common.Version - Hibernate Commons Annotations 3.2.0.Final
95 [Thread-19] INFO org.hibernate.cfg.Configuration - configuring from resource: hibernate.cfg.xml
95 [Thread-19] INFO org.hibernate.cfg.Configuration - Configuration resource: hibernate.cfg.xml
172 [Thread-19] INFO org.hibernate.cfg.Configuration - Configured SessionFactory: null
176 [Thread-19] INFO org.hibernate.cfg.search.HibernateSearchEventListenerRegister - Unable to find org.hibernate.search.event.FullTextIndexEventListener on the classpath. Hibernate Search is not enabled.
208 [Thread-19] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: com.br.joaoleno.usuario.Usuario
241 [Thread-19] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity com.br.joaoleno.usuario.Usuario on table usuario
278 [Thread-19] INFO org.hibernate.cfg.AnnotationConfiguration - Hibernate Validator not found: ignoring
317 [Thread-19] INFO org.hibernate.connection.DriverManagerConnectionProvider - Using Hibernate built-in connection pool (not for production use!)
317 [Thread-19] INFO org.hibernate.connection.DriverManagerConnectionProvider - Hibernate connection pool size: 20
317 [Thread-19] INFO org.hibernate.connection.DriverManagerConnectionProvider - autocommit mode: false
317 [Thread-19] INFO org.hibernate.connection.DriverManagerConnectionProvider - using driver: org.postgresql.Driver at URL: jdbc:postgresql://localhost:5433/login
344 [Thread-19] INFO org.hibernate.connection.DriverManagerConnectionProvider - connection properties: {user=postgres, password=****}
367 [Thread-19] INFO org.hibernate.cfg.SettingsFactory - RDBMS: PostgreSQL, version: 9.1.4
367 [Thread-19] INFO org.hibernate.cfg.SettingsFactory - JDBC driver: PostgreSQL Native Driver, version: PostgreSQL 8.2 JDBC2 with NO SSL (build 505)
391 [Thread-19] INFO org.hibernate.dialect.Dialect - Using dialect: org.hibernate.dialect.PostgreSQLDialect
Criação e inicial do objeto SessionFacotry. Erro.: org.postgresql.jdbc2.Jdbc2DatabaseMetaData.getJDBCMajorVersion()I
09/07/2012 16:29:27 org.apache.catalina.core.StandardContext startInternal
SEVERE: Error filterStart
09/07/2012 16:29:27 org.apache.catalina.core.StandardContext startInternal
SEVERE: Context [/Cad] startup failed due to previous errors [/code]
esse url de conexão postgre ta certa?
Você nao precisa fica abrindo vários topicos para resolver seu problema, tenha calma
DaniloAndrade , acredito que esteja certa, por que eu tinha um projeto desktop que utilizava o hibvernate e o banco era o postgresql, e a url era essa.
vc pode colocar sua classe HibernateUtil pra gente ver
DaniloAndrade, Olhe aí a classe
[code]/*
Class responsavel por fazer a ponte entre o arquivo de configuração e a conexão com o banco.
*/
package com.br.joaoleno.util;
/**
*
-
@author Joao Leno
*/
import org.hibernate.HibernateException;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;
public class HibernateUtil {
private static final SessionFactory sessionFactory = buildSessionFactory();//Cria uma instancia de SessionFactory
private static SessionFactory buildSessionFactory()//Metodo responsavel por configurar o ambiente e retorna uma SessionFactory
{
try
{
AnnotationConfiguration cfg = new AnnotationConfiguration();
cfg.configure("hibernate.cfg.xml");//Cria uma SessionFactory com base no arquivo xml
return cfg.buildSessionFactory();//Configura o hibernate e retorna uma SessionFactory
}
catch(Throwable erro)
{
System.out.println("Criação e inicial do objeto SessionFacotry. Erro.: "+erro.getMessage());
throw new ExceptionInInitializerError(erro); //Acionado para indicar que ocorreu uma exceção durante a avaliação de um inicializado estatico ou inicializador para uma váriavel estática.
}
}
public static SessionFactory getSessionFactory()//Metodo responsavel por retornar uma SessionFactory
{
return sessionFactory;
}
}
[/code]
o erro tá dando nessa classe, ele tá caindo no catch, mas é muito estranho no mysql, funciona
Ooow e agora quem poderá me defender ?
troca
AnnotationConfiguration cfg = new AnnotationConfiguration();
cfg.configure("hibernate.cfg.xml");//Cria uma SessionFactory com base no arquivo xml
por
Configuration cfg = new Configuration();
cfg .configure();
ve se resolve
Da erro, por que estou usando notações
Caused by: org.hibernate.MappingException: An AnnotationConfiguration instance is required to use
coloca sua classe Usuario
minha classe Usuario, já estava colocada. Porem ainda recebo aquela mensagem de erro.
não coloca o codigo da sua classe Usuario pra gente poder ver
Beleza taew o código da minha classe Usuario
package com.br.joaoleno.usuario;
/*
* @author Joao Leno
*/
import java.io.*;
import javax.persistence.*;
import java.util.*;
@Entity//Entidade
@Table(name = "usuario")
public class Usuario {
@Id
@GeneratedValue
private Integer idUsuario;
// @Column (name="nomeUsuario")nome e na minha classe fosse outro
private String nome;
@org.hibernate.annotations.NaturalId //Siginifica que o campo email, é único, ou seja, não pode haver email repetido.
private String email;
private String senha;
private String idioma;
private Boolean estatus;
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Integer getIdUsuario() {
return idUsuario;
}
public void setIdUsuario(Integer idUsuario) {
this.idUsuario = idUsuario;
}
public String getIdioma() {
return idioma;
}
public void setIdioma(String idioma) {
this.idioma = idioma;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
public Boolean getEstatus() {
return estatus;
}
public void setEstatus(Boolean status) {
this.estatus = status;
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final Usuario other = (Usuario) obj;
if (this.idUsuario != other.idUsuario && (this.idUsuario == null || !this.idUsuario.equals(other.idUsuario))) {
return false;
}
if ((this.nome == null) ? (other.nome != null) : !this.nome.equals(other.nome)) {
return false;
}
if ((this.email == null) ? (other.email != null) : !this.email.equals(other.email)) {
return false;
}
if ((this.senha == null) ? (other.senha != null) : !this.senha.equals(other.senha)) {
return false;
}
if ((this.idioma == null) ? (other.idioma != null) : !this.idioma.equals(other.idioma)) {
return false;
}
if (this.estatus != other.estatus && (this.estatus == null || !this.estatus.equals(other.estatus))) {
return false;
}
return true;
}
@Override
public int hashCode() {
int hash = 5;
hash = 13 * hash + (this.idUsuario != null ? this.idUsuario.hashCode() : 0);
hash = 13 * hash + (this.nome != null ? this.nome.hashCode() : 0);
hash = 13 * hash + (this.email != null ? this.email.hashCode() : 0);
hash = 13 * hash + (this.senha != null ? this.senha.hashCode() : 0);
hash = 13 * hash + (this.idioma != null ? this.idioma.hashCode() : 0);
hash = 13 * hash + (this.estatus != null ? this.estatus.hashCode() : 0);
return hash;
}
}
provavelmente não tem a ver com o código feito, até por que se fosse esse o caso não funcionaria com o my sql, inclusive o erro que está ocorrendo diz que a classe não está mapeada, por causa do descrito abaixo.
[quote=DaniloAndrade]
troca
AnnotationConfiguration cfg = new AnnotationConfiguration();
cfg.configure("hibernate.cfg.xml");//Cria uma SessionFactory com base no arquivo xml
por
Configuration cfg = new Configuration();
cfg .configure();
ve se resolve[/quote]
fazendo deste jeito o hibernate não vai encontrar o arquivo xml de configuração dele, acredito que nesse caso ele irá procurar um hibernate.properties, que nesse caso não existe, por isso o erro dizendo :
[quote]
Caused by: org.hibernate.MappingException: An AnnotationConfiguration instance is required to use [/quote]
joaolenosi, eu nunca usei o postgree, mas me parece pela descrição do erro ser alguma coisa no seu driver, procure pegar alguma versão do driver referente a mesma versão do banco de dados e tente com a mais recente, veja se com uma das duas funciona.
comenta essa linha @org.hibernate.annotations.NaturalId
e faz um teste pra ver
maior_abandonado, o que você falou tem plena coerência. Acredito que também seja o drive.
Eu tenho o postgreSQL 8.2 e o postgreSQL 9.1 e todos já vem com o drive, já tentei utilizar as diferentes versões com seus respectivos jdbc e mesmo assim não deu certo,
fico recebendo essa mensagem de erro.
Criação e inicial do objeto SessionFacotry. Erro.: org.postgresql.jdbc2.Jdbc2DatabaseMetaData.getJDBCMajorVersion()I
Danilo fiz o teste assim, tambem da erro.
Acredito que o problema não seja com o código, até por que esse projeto funciona da mesma forma no mysql. A única coisa que alterei foi os drives e o hibernate.cfg.xml
10/07/2012 10:37:53 org.apache.catalina.core.StandardContext filterStart
SEVERE: Exception starting filter HibernateFilter
java.lang.ExceptionInInitializerError
at com.br.joaoleno.util.HibernateUtil.buildSessionFactory(HibernateUtil.java:30)
at com.br.joaoleno.util.HibernateUtil.<clinit>(HibernateUtil.java:17)
at com.br.joaoleno.web.filter.HibernateSessionRequestFilter.init(HibernateSessionRequestFilter.java:22)
at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:273)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:254)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:372)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:98)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4584)
at org.apache.catalina.core.StandardContext$2.call(StandardContext.java:5262)
at org.apache.catalina.core.StandardContext$2.call(StandardContext.java:5257)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
at java.lang.Thread.run(Thread.java:619)
Caused by: org.hibernate.MappingException: An AnnotationConfiguration instance is required to use <mapping class="com.br.joaoleno.usuario.Usuario"/>
at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1692)
at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1647)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1626)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1600)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1520)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1506)
at com.br.joaoleno.util.HibernateUtil.buildSessionFactory(HibernateUtil.java:24)
... 14 more
volta esse codigo novamente
AnnotationConfiguration cfg = new AnnotationConfiguration();
cfg.configure("hibernate.cfg.xml");