[Resolvido] Erro Hibernate - ERRO: relação "tabela" não existe

Boa Noite,

Estou estudando a Apostila da Caelum FJ28, me deparo com o primeiro exercício de cadastrar um produto usando Hibernate.

Sei que com o uso deste Framework eu não preciso ir no banco de dados e criar a tabela, o mesmo cria para mim de acordo com os anotações.

Segui o exemplo da apostila, mas no momento de executar minha classe acontece o seguinte erro:

GRAVE: ERRO: relação "produto" não existe Posição: 13 Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not insert: [modelo.Produto]

Minha classe produto está da seguinte maneira:

[code]import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

/**
*

  • @author Administrador
    */
    @Entity
    public class Produto {
    @Id
    @GeneratedValue(strategy= GenerationType.IDENTITY)
    private Long idProduto;
    private String nome;
    private String descricao;
    private Double preco;

    public String getDescricao() {
    return descricao;
    }

    public void setDescricao(String descricao) {
    this.descricao = descricao;
    }

    public Long getIdProduto() {
    return idProduto;
    }

    public void setIdProduto(Long idProduto) {
    this.idProduto = idProduto;
    }

    public String getNome() {
    return nome;
    }

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

    public Double getPreco() {
    return preco;
    }

    public void setPreco(Double preco) {
    this.preco = preco;
    }

}
[/code]

Se eu mudo minha classe para @GeneratedValue(strategy= GenerationType.AUTO) ou @GeneratedValue(strategy= GenerationType.SEQUENCE)

Acontece o seguinte erro:

Segui os passos da apostila, mas estou usando o PostgresSQL/Netbeans e na apostila usam MySQL/Eclipse.

Alguém pode me ajudar e explicar o motivo do erro?

Grato.

Vc criou a sequence?

Como está sua configuração hibernate.hbm2ddl.auto?

Olá BtAquino,

No PostgreSQL, quando você usa

Você está forçando o uso do case sensitive, verifique se realmente a tabela produto existe. Veja se não é Produto, produtos…

Abraços.

_ _
Fabiano Abreu
Papo Sql - Um blog com tutoriais, dicas e truques sobre SQL

Boa Noite jakefrog,

Eu só segui os passo da apostila.

Que pediu apenas para configurar o hibernate.cfg.xml.
Criar a classe produto, que esta acima e uma classe adiciona Produto.

Executar e conferir se gerou a tabela no banco.

A classe adicona produto está assim:


import modelo.Produto;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.AnnotationConfiguration;

/**
 *
 * @author Administrador
 */
public class AdicionaProduto {
    public static void main(String [] args){
        
        AnnotationConfiguration configuration = new AnnotationConfiguration();
        configuration.configure();
        SessionFactory factory = configuration.buildSessionFactory();
        Session session = factory.openSession();
        
        Produto novoProduto = new Produto();
        
        novoProduto.setNome("Picanha");
        novoProduto.setDescricao("Picanha Congelada");
        novoProduto.setPreco(15.00);
        
        Transaction tx = session.beginTransaction();
        session.save(novoProduto);
        tx.commit();
    }
    
}

hibernate.cfg.xml:

[code]<?xml version="1.0" encoding="UTF-8"?>

org.hibernate.dialect.PostgreSQLDialect org.postgresql.Driver jdbc:postgresql://localhost:5432/GestaoAcademiaWEB postgres 2504 true true [/code]

Boa Noite Fabiano Abreu ,

Mas o com Hibernate ele não irá criar a tabela produto automaticamente para mim no Postgres?

Eu não preciso ir no banco de dar um create table produto …

[quote=BtAquino]Boa Noite Fabiano Abreu ,

Mas o com Hibernate ele não irá criar a tabela produto automaticamente para mim no Postgres?

Eu não preciso ir no banco de dar um create table produto …[/quote]

Para ele criar você precisa adicionar a propriedade “hibernate.hbm2ddl.auto = update” no arquivo hibernate.cfg.xml.

[quote=romarcio][quote=BtAquino]Boa Noite Fabiano Abreu ,

Mas o com Hibernate ele não irá criar a tabela produto automaticamente para mim no Postgres?

Eu não preciso ir no banco de dar um create table produto …[/quote]

Para ele criar você precisa adicionar a propriedade “hibernate.hbm2ddl.auto = update” no arquivo hibernate.cfg.xml.

Obrigado, era isso que estava ocasionando problemas.