Ajuda hibernate curso fj21 exercicio 13.7

5 respostas
C

Pessoal, sou iniciante em java e quando comecei a trabalhar com hibernate tive um pequeno problema, o programa nao esta dando erro algum ( visivel ) ao menos, mas a tabela de Produto que eu peco para criar no meu MySQL ( 5.1.37 Ubuntu ) nao esta sendo gerada e o codigo em sql para a criacao da tabela nao esta sendo exibido no console como o esperado.

Segue baixo a minha classe Produto:
import java.math.BigDecimal;
import java.util.Calendar;

import javax.persistence.GeneratedValue;
import javax.persistence.Id;


import org.hibernate.annotations.Entity;



@Entity
public class Produto {
	@Id
	@GeneratedValue
	private Long id;
	private String nome;
	private BigDecimal preco;
	private Calendar dataInicioVenda;
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public BigDecimal getPreco() {
		return preco;
	}
	public void setPreco(BigDecimal preco) {
		this.preco = preco;
	}
	public Calendar getDataInicioVenda() {
		return dataInicioVenda;
	}
	public void setDataInicioVenda(Calendar dataInicioVenda) {
		this.dataInicioVenda = dataInicioVenda;
	}
	
	
	
}
Agora a minha classe de teste que tem o metodo main.
package br.com.caelum.hibernate;

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

public class GerarTabelas {

	public static void main(String[] args) {
		AnnotationConfiguration cfg  = new AnnotationConfiguration();
		cfg.addAnnotatedClass(Produto.class);
		
		SchemaExport se = new SchemaExport(cfg);
		
		System.out.println("## EXECUTANDO ###");
		se.create(true, true);
		
		System.out.println("--------------- FIM -----------------");
	}

}
Meu arquivo de configuracao do hibernate:
hibernate.dialect = org.hibernate.dialect.MySQLDialect
hibernate.connection.driver_class = com.mysql.jdbc.Driver
hibernate.connection.url = jdbc:mysql://localhost/fj21
hibernate.connection.username = root
hibernate.connection.password = *******
hibernate.connection.autocommit = true
hibernate.show_sql = true
hibernate.format_sql = true
E por fim o que esta sendo exibido no meu console:
2 [main] INFO org.hibernate.cfg.annotations.Version - Hibernate Annotations 3.4.0.CR2
30 [main] INFO org.hibernate.cfg.Environment - Hibernate 3.3.0.CR2
33 [main] INFO org.hibernate.cfg.Environment - loaded properties from resource hibernate.properties: {hibernate.connection.autocommit=true, hibernate.connection.driver_class=com.mysql.jdbc.Driver, hibernate.dialect=org.hibernate.dialect.MySQLDialect, hibernate.format_sql=true, hibernate.connection.username=root, hibernate.connection.url=jdbc:mysql://localhost/fj21, hibernate.bytecode.use_reflection_optimizer=false, hibernate.show_sql=true, hibernate.connection.password=****}
36 [main] INFO org.hibernate.cfg.Environment - Bytecode provider name : javassist
46 [main] INFO org.hibernate.cfg.Environment - using JDK 1.4 java.sql.Timestamp handling
114 [main] INFO org.hibernate.annotations.common.Version - Hibernate Commons Annotations 3.2.0.Final
140 [main] INFO org.hibernate.dialect.Dialect - Using dialect: org.hibernate.dialect.MySQLDialect
242 [main] INFO org.hibernate.cfg.AnnotationConfiguration - Hibernate Validator not found: ignoring
## EXECUTANDO ###
246 [main] INFO org.hibernate.tool.hbm2ddl.SchemaExport - Running hbm2ddl schema export
248 [main] INFO org.hibernate.tool.hbm2ddl.SchemaExport - exporting generated schema to database
251 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - Using Hibernate built-in connection pool (not for production use!)
251 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - Hibernate connection pool size: 20
251 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - autocommit mode: true
260 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - using driver: com.mysql.jdbc.Driver at URL: jdbc:mysql://localhost/fj21
260 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - connection properties: {user=root, password=****, autocommit=true}
540 [main] INFO org.hibernate.tool.hbm2ddl.SchemaExport - schema export complete
541 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - cleaning up connection pool: jdbc:mysql://localhost/fj21
--------------- FIM -----------------

Alguem ai ajudaria o pobre coitado newbie?

5 Respostas

gledson85

Faltou definir a Entidade Produto no hibernate.cfg.xml.

C

entao, pelo que foi explicado no curso da caelum, na nova versao do hibernate basta a notacao para isso, no mais eu faco uma referencia somente ao Produto.class, onde ele ira buscar as anotacoes que foram feitas.

tanto que no exercicio de classe soh usamos o hibernate.properties que foi criado no diretorio src que foi colocado por mim e que replico abaixo:

hibernate.dialect = org.hibernate.dialect.MySQLDialect hibernate.connection.driver_class = com.mysql.jdbc.Driver hibernate.connection.url = jdbc:mysql://localhost/fj21 hibernate.connection.username = root hibernate.connection.password = 17252692 hibernate.connection.autocommit = true hibernate.show_sql = true hibernate.format_sql = true

Paulo_Silveira

ola carlos!

Correto, nao precisa adicionar sua entidade Produto no xml ja que voce o esta adicionando programaticamente

Troque esse import:

import org.hibernate.annotations.Entity;

por esse import:

import javax.persistence.Entity;
C

Muito obrigado Paulo, funcionou

Paulo Silveira:
ola carlos!

Correto, nao precisa adicionar sua entidade Produto no xml ja que voce o esta adicionando programaticamente

Troque esse import:

import org.hibernate.annotations.Entity;

por esse import:

import javax.persistence.Entity;

L

Galera estou com uma dúvida no exercicio 13.7.

EU criei a classe produto fiz as anotações adicioneiii os jars do Hibernate e fiz o gerador de tabelas como na apostila, mas na hora que eu compilo ele nem mostra e nem cria o SQL ele começa a executar:

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).
log4j:WARN Please initialize the log4j system properly.
//E para aquii não continua executando e nem cria o SQL

//HIBERNATE.PROPERTIES

hibernate.dialect = org.hibernate.dialect.MySQLInnoDBDialect
hibernate.connection.driver_class = com.mysql.jdbc.Driver
hibernate.connection.url = jdbc:mysql://localhost/fj21
hibernate.connection.username = root
hibernate.connection.password =
hibernate.show_sql = true
hibernate.format_sql = true

//GERA TABELAS
package br.com.caelum.hibernate;

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(Produto.class);

SchemaExport se = new SchemaExport(cfg);

System.out.println(Executando…”);

se.create(true, true);

}

}

Se alguem puder me mostrar onde estou errando fico Grato.

Att:
Luan Sousa

Criado 14 de abril de 2010
Ultima resposta 30 de out. de 2010
Respostas 5
Participantes 4