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.