Hibernate e PostgreSQL

4 respostas
Andre_JavaWorld

Ola Pessoal, estou tendo um grande problema para configurar o hibernate com o Postgres, o meu objetivo e fazer ele gerar as tabelas automaticamente pra mim, tudo bem, configurei o hibernate, as anotaçoes, mas na hora de gerar as tabelas via o DDL do SchemaExport ele nao faz nada! nao da erro! nao grava! nao faz nada, a unica coisa que ele faz é mostrar que eu ainda nao configurei o log4j e depois acaba, mas até onde eu sei a configuracao do log4j nao é obrigatoria, vou postar as minhas classes pro pessoal dar uma olhada, a minha classe usuario:

package com.funcionarios.modelo;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class Usuario{
    @Id
    @GeneratedValue
    private Long id;
    @Column(name="Nome", nullable=false, length=50)
    private String nome;
    @Column(name="Senha", nullable=false, length=50)
    private String senha;
    @Column(name="Privilegio", nullable=false, length=30)
    private String privilegio;

//Getters e setters...

A Minha Classe GeraTabelas

package com.funcionarios.modelo;

import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.tool.hbm2ddl.SchemaExport;

public class GeraTabelas{
    public static void main(String args[]){
        AnnotationConfiguration cfg = new AnnotationConfiguration();
        cfg.addAnnotatedClass(Usuario.class);
        SchemaExport se = new SchemaExport(cfg);
        se.create(true, true);
    }
}

e por fim o meu hibernate.properties

hibernate.dialect org.hibernate.dialect.PostgreSQLDialect
hibernate.connection.driver_class = org.postgresql.Driver
hibernate.connection.url = jdbc:postgresql://localhost:5432/I9IT
hibernate.connection.username = postgres
hibernate.connection.password = adminadmin
hibernate.show_sql true
hibernate.format_sql true

Repetindo o problema, eu nao tenho erro nenhum, ele simplesmente nao grava a tabela pra mim, nao sei como, mas nao grava, tambem ja tentei alterar o hibernate.properties para conectar com o apache Derby para ver se era problema do Postgres e deu a mesma coisa… alguem ja passou por problema parecido que seja? estou usando netbeans 6.1 como IDE, usando hibernate annotations, se alguem puder ajudar, fico agradecido!

4 Respostas

christo

Andre,

Funciona sem o log4j sim (o sistema irá apenas apresentar um warning sobre a falta dele).

O que tá faltando é o “cfg.configure();”, que irá configurar sua conexão de acordo com seu hibernate.cfg.xml.

Fica assim:

public class GeraTabelas{ public static void main(String args[]){ AnnotationConfiguration cfg = new AnnotationConfiguration(); cfg.addAnnotatedClass(Usuario.class); cfg.configure(); SchemaExport se = new SchemaExport(cfg); se.create(true, true); } }

Abrs,

Christovam

Andre_JavaWorld

Muito obrigado Christo, mas com o “cfg.configure();” nao funciona e gera erro, porque eu nao estou usando hibernate.cfg.xml, eu estou usando apenas um hibernate.properties, acho que deva ser algo no meu hibernate.properties, nao sei, eu sempre usei esta configuracao em outros projetos e funcionava… nao sabe se pode ser outra coisa? obrigado por ter respondido

christo

Entendi…
Pode ser que ele não esteja encontrando o driver do PostgreSQL, mas pra ter certeza é só criando o log4j.properties na mesma pasta do hibernate.properties mesmo, que daí ele mostra o erro direitinho:

### direct log messages to stdout ### log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n log4j.rootLogger=warn, stdout log4j.logger.org.hibernate=error log4j.logger.org.hibernate.type=error log4j.logger.org.hibernate.tool.hbm2ddl=error

Andre_JavaWorld

Ola, Muito Obrigado, realmente era um erro, ele nao estava encontrando o driver do PostGres, mas eu nao sei porque, afinal de contas ele estava no classpath… mas bom, rsrs acontece, eu substitui o driver do netbeans por uma nova versao, que é a que eu uso, depois alterei o hibernate.properties e funcionou, mas realmente foi o Log4j que me mostrou o erro, obrigado por ajudar

Criado 15 de julho de 2008
Ultima resposta 15 de jul. de 2008
Respostas 4
Participantes 2