Problema com hibernate 3.5.0 Final [RESOLVIDO]

Olá galera

Estou seguindo a apostila da caelum fj21 e estou com o seguinte problema quando eu vou rodar a classe GeraTabela para gerar a tabela no banco

Tenho as seguintes classes


import java.util.Calendar;
import javax.persistence.*;

@Entity
public class Produto {

	@Id
	
	@GeneratedValue
	Long id;
	
	String nome;
	double preco;
	private Calendar dataInicioVenda;

getters and setters

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);
		se.create(true, true);
	}

}

arquivo hibernate.properties


 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 = root

hibernate.show_sql = true
hibernate.format_sql = true

adicionei os .jar

hibernate3.jar
hibernate-testing.jar
antilr.jar
commons-collections.jar
dom4j.jar
javassist.jar
jta.jar
slfj4.jar
mysqlconnector.jar

E quando eu rodo a classe GeraTabela da o seguinte mensagem só que não cria a tabela no banco


SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
Apr 6, 2010 2:10:15 PM org.hibernate.cfg.annotations.Version <clinit>
INFO: Hibernate Annotations 3.5.0-Final
Apr 6, 2010 2:10:15 PM org.hibernate.cfg.Environment <clinit>
INFO: Hibernate 3.5.0-Final
Apr 6, 2010 2:10:15 PM org.hibernate.cfg.Environment <clinit>
INFO: loaded properties from resource hibernate.properties: {hibernate.connection.username=root, hibernate.connection.password=****, hibernate.dialect=org.hibernate.dialect.MySQLDialect, hibernate.show_sql=true, hibernate.connection.url=jdbc:mysql://localhost/fj21, hibernate.bytecode.use_reflection_optimizer=false, hibernate.connection.driver_class=com.mysql.jdbc.Driver, hibernate.format_sql=true}
Apr 6, 2010 2:10:15 PM org.hibernate.cfg.Environment buildBytecodeProvider
INFO: Bytecode provider name : javassist
Apr 6, 2010 2:10:15 PM org.hibernate.cfg.Environment <clinit>
INFO: using JDK 1.4 java.sql.Timestamp handling
Apr 6, 2010 2:10:15 PM org.hibernate.annotations.common.Version <clinit>
INFO: Hibernate Commons Annotations 3.2.0.Final
Apr 6, 2010 2:10:15 PM org.hibernate.dialect.Dialect <init>
INFO: Using dialect: org.hibernate.dialect.MySQLDialect
Apr 6, 2010 2:10:15 PM org.hibernate.cfg.AnnotationConfiguration applyHibernateValidatorLegacyConstraintsOnDDL
INFO: Hibernate Validator not found: ignoring
Apr 6, 2010 2:10:15 PM org.hibernate.tool.hbm2ddl.SchemaExport execute
INFO: Running hbm2ddl schema export
Apr 6, 2010 2:10:15 PM org.hibernate.tool.hbm2ddl.SchemaExport execute
INFO: exporting generated schema to database
Apr 6, 2010 2:10:15 PM org.hibernate.connection.DriverManagerConnectionProvider configure
INFO: Using Hibernate built-in connection pool (not for production use!)
Apr 6, 2010 2:10:15 PM org.hibernate.connection.DriverManagerConnectionProvider configure
INFO: Hibernate connection pool size: 20
Apr 6, 2010 2:10:15 PM org.hibernate.connection.DriverManagerConnectionProvider configure
INFO: autocommit mode: false
Apr 6, 2010 2:10:16 PM org.hibernate.connection.DriverManagerConnectionProvider configure
INFO: using driver: com.mysql.jdbc.Driver at URL: jdbc:mysql://localhost/fj21
Apr 6, 2010 2:10:16 PM org.hibernate.connection.DriverManagerConnectionProvider configure
INFO: connection properties: {user=root, password=****}
Apr 6, 2010 2:10:16 PM org.hibernate.tool.hbm2ddl.SchemaExport execute
INFO: schema export complete
Apr 6, 2010 2:10:16 PM org.hibernate.connection.DriverManagerConnectionProvider close
INFO: cleaning up connection pool: jdbc:mysql://localhost/fj21

Atenciosamente

Galera alguem tem uma ideia doke seja?

Eu estou tentando resolver e por enquanto nada =/

no seu GeraTabelas após user o se.create…

coloque isso.

Session session = new HibernateUtil().getSession();  
session.createQuery("from Produto");
session.close();

Coloquei o código e fiz o seguinte import

import org.hibernate.classic.Session;

Só que o eclipse acusa que a classe HibernateUtil() não existe, pede pra criar a classe

Oq sera q eh isso?

ola! a apostila diz pra voce justo ter esse cuidado: na e pra fazer import da Session classic:

remova esse import e troque pela do org.hibernate direto.

alem disso, se o banco nao foi gerado é pq deu erro. o seu log4j.properties esta devidamente configurado?

Você não tem a classe HibernateUtil ??

Vai precisar dela, ou pelo menos de alguma classe pra controlar suas conexoes, sessoes, sua Factory

Por enquanto eu to seguindo a apostila FJ21 da caelum, eh a primeira vez com o hibernate

Depois eles devem fazer essa classe hibernateutil

Eles passaram esse codigo ateh agora soh

E era pra cria a tabela produto lah soh q nao cria =/

Oh a HibernateUtil é no proximo capitulo

Antes disso, não tem log4j pra configurar, só o hibernate.properties mesmo, e com esse mesmo código era crair a tabela no banco

É o exercicio da página 157 e 158 da apostila FJ21 atualizada

http://downloads.caelum.com.br/apostila/caelum-java-web-fj21.pdf

Na pagina 158, num box chamado “Configurando o log do Hibernate”, ele fala pra voce configurar o log4j pra voce ver exatamente o que esta acontencendo.

Infelizmente a classe SchemaExport tem esse problema: se da pau, ela engole a exception e loga, mas nao imprime nada na tela se o seu log4j nao esta configurado.

Use esse log4j.properties como modelo, colocando-o no seu diretorio src (que vai parar no seu buildpath):

[code]log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{HH:mm:ss} %5p [%-20c{1}] %m%n

log4j.rootLogger=warn, stdout
log4j.logger.org.hibernate=info
[/code]

eu joguei esse arquivo log4j.properities para o scr do projeto como pedido

Mas oq tem que configurar

arquivo log4j.propeties


### 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

### direct messages to file hibernate.log ###
#log4j.appender.file=org.apache.log4j.FileAppender
#log4j.appender.file.File=hibernate.log
#log4j.appender.file.layout=org.apache.log4j.PatternLayout
#log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### set log levels - for more verbose logging change 'info' to 'debug' ###

log4j.rootLogger=warn, stdout

#log4j.logger.org.hibernate=info
log4j.logger.org.hibernate=debug

### log HQL query parser activity
#log4j.logger.org.hibernate.hql.ast.AST=debug

### log just the SQL
#log4j.logger.org.hibernate.SQL=debug

### log JDBC bind parameters ###
log4j.logger.org.hibernate.type=info
#log4j.logger.org.hibernate.type=debug

### log schema export/update ###
log4j.logger.org.hibernate.tool.hbm2ddl=debug

### log HQL parse trees
#log4j.logger.org.hibernate.hql=debug

### log cache activity ###
#log4j.logger.org.hibernate.cache=debug

### log transaction activity
#log4j.logger.org.hibernate.transaction=debug

### log JDBC resource acquisition
#log4j.logger.org.hibernate.jdbc=debug

### enable the following line if you want to track down connection ###
### leakages when using DriverManagerConnectionProvider ###
#log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace

Oq tem q mudar nele

Peguei ele da pasta etc do hibernate

achei no siste da caelum

Eles disponibilizaram uma pasta com todos os .jars o hibernate.cfj.xml e o log4j.properties

Adicionei todos no projeto

Segue o código

hibernate.cfj.xml


<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
	<session-factory>
		
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.url">jdbc:mysql://localhost/fj21</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password">root</property>
		<property name="show_sql">true</property>
		<property name="format_sql">true</property>
		<property name="dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>	
	
	</session-factory>
</hibernate-configuration>

log4j.properties


log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{HH:mm:ss} %5p [%-20c{1}] %m%n

log4j.rootLogger=warn, stdout
log4j.logger.org.hibernate=info

agora quando eu compilo da a seguinte mensagem


16:07:21  INFO [Version             ] Hibernate Annotations 3.5.0-Final
16:07:21  INFO [Environment         ] Hibernate 3.5.0-Final
16:07:21  INFO [Environment         ] hibernate.properties not found
16:07:21  INFO [Environment         ] Bytecode provider name : javassist
16:07:21  INFO [Environment         ] using JDK 1.4 java.sql.Timestamp handling
16:07:21  INFO [Version             ] Hibernate Commons Annotations 3.2.0.Final
Exception in thread "main" org.hibernate.HibernateException: The dialect was not set. Set the property hibernate.dialect.
	at org.hibernate.dialect.Dialect.instantiateDialect(Dialect.java:305)
	at org.hibernate.dialect.Dialect.getDialect(Dialect.java:283)
	at org.hibernate.dialect.Dialect.getDialect(Dialect.java:298)
	at org.hibernate.tool.hbm2ddl.SchemaExport.<init>(SchemaExport.java:121)
	at org.hibernate.tool.hbm2ddl.SchemaExport.<init>(SchemaExport.java:91)
	at br.com.caelum.hibernate.GeraTabelas.main(GeraTabelas.java:12)

Ola Bruno

Altere

org.hibernate.dialect.MySQLInnoDBDialect

Para

org.hibernate.dialect.MySQLInnoDBDialect

Vou atualizar la no post!

paulo agora deu o seguinte erro

pra q q serve essa linha

<mapping class="br.com.caelum.SUA_CLASSE_AQUI!!"/>

eu tirei do meu arquivo xml e substitui a linha que você pediu

mensagem


16:31:34  INFO [Version             ] Hibernate Annotations 3.5.0-Final
16:31:34  INFO [Environment         ] Hibernate 3.5.0-Final
16:31:34  INFO [Environment         ] hibernate.properties not found
16:31:34  INFO [Environment         ] Bytecode provider name : javassist
16:31:34  INFO [Environment         ] using JDK 1.4 java.sql.Timestamp handling
16:31:34  INFO [Version             ] Hibernate Commons Annotations 3.2.0.Final
Exception in thread "main" org.hibernate.HibernateException: The dialect was not set. Set the property hibernate.dialect.
	at org.hibernate.dialect.Dialect.instantiateDialect(Dialect.java:305)
	at org.hibernate.dialect.Dialect.getDialect(Dialect.java:283)
	at org.hibernate.dialect.Dialect.getDialect(Dialect.java:298)
	at org.hibernate.tool.hbm2ddl.SchemaExport.<init>(SchemaExport.java:121)
	at org.hibernate.tool.hbm2ddl.SchemaExport.<init>(SchemaExport.java:91)
	at br.com.caelum.hibernate.GeraTabelas.main(GeraTabelas.java:12)

Essa linha serve pra voce adicionar suas classes se voce nao quiser usar o .addENtity. No seu caso, voce pode retirar.

Bem, se continua com o problema, tudo indica que voce deve ter um hibernate.properties em algum lugar, e ele esta sendo carregado em vez do XML. apague o .properties, ou adicione o dialect no properties.

Não tenho nao

Eu apaguei

Até verifiquei todas as pastas do projeto pra ter ctz, mostrando os arquivos ocultos

Só tenho o xml e o log4j.properties =/

Criei um projeto novo

Com os .jar daquele arquivo do seu post e o .xml e o log4j.com e deu a mesma msg quando eu compilo a classe GeraTabelas


16:59:13  INFO [Version             ] Hibernate Annotations 3.5.0-Final
16:59:13  INFO [Environment         ] Hibernate 3.5.0-Final
16:59:13  INFO [Environment         ] hibernate.properties not found
16:59:13  INFO [Environment         ] Bytecode provider name : javassist
16:59:13  INFO [Environment         ] using JDK 1.4 java.sql.Timestamp handling
16:59:13  INFO [Version             ] Hibernate Commons Annotations 3.2.0.Final
Exception in thread "main" org.hibernate.HibernateException: The dialect was not set. Set the property hibernate.dialect.
	at org.hibernate.dialect.Dialect.instantiateDialect(Dialect.java:305)
	at org.hibernate.dialect.Dialect.getDialect(Dialect.java:283)
	at org.hibernate.dialect.Dialect.getDialect(Dialect.java:298)
	at org.hibernate.tool.hbm2ddl.SchemaExport.<init>(SchemaExport.java:121)
	at org.hibernate.tool.hbm2ddl.SchemaExport.<init>(SchemaExport.java:91)
	at br.com.caelum.hibernate.GeraTabelas.main(GeraTabelas.java:12)

=/

Oi Bruno

Posta pra mim seu hibernate.cfg.xml inteiro?

valeu


<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
	<session-factory>
		
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.url">jdbc:mysql://localhost/fj21</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password">root</property>
		<property name="show_sql">true</property>
		<property name="format_sql">true</property>
		<property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property> 
	
	</session-factory>
</hibernate-configuration>

ta aqui

E desde já obrigado pela atenção dada ao tópico =D

ta tudo mais que correto. algum detalhe esta nos escapando.

ligue o hibernate em modo de debug no log4j.properties. altere

log4j.logger.org.hibernate=info

para

log4j.logger.org.hibernate=debug

e posta a saida

Bruno, to encafifado com isso.

a saída foi essa


17:26:02,718 INFO  [main] Main  - javax.xml.transform.TransformerFactory=null
17:26:02,721 INFO  [main] Main  - java.endorsed.dirs=/usr/lib/jvm/java-6-openjdk/jre/lib/endorsed
17:26:02,727 INFO  [main] Main  - launchFile: /home/bruno/javaEE-workspace/.metadata/.plugins/org.eclipse.wst.xsl.jaxp.launching/launch/launch.xml
17:26:14,054 FATAL [main] Main  - No embedded stylesheet instruction for file: file:/home/bruno/javaEE-workspace/hibernate/src/hibernate.cfg.xml
org.eclipse.wst.xsl.jaxp.debug.invoker.TransformationException: No embedded stylesheet instruction for file: file:/home/bruno/javaEE-workspace/hibernate/src/hibernate.cfg.xml
	at org.eclipse.wst.xsl.jaxp.debug.invoker.internal.JAXPSAXProcessorInvoker.transform(JAXPSAXProcessorInvoker.java:225)
	at org.eclipse.wst.xsl.jaxp.debug.invoker.internal.JAXPSAXProcessorInvoker.transform(JAXPSAXProcessorInvoker.java:186)
	at org.eclipse.wst.xsl.jaxp.debug.invoker.internal.Main.main(Main.java:73)
Caused by: org.eclipse.wst.xsl.jaxp.debug.invoker.TransformationException: No embedded stylesheet instruction for file: file:/home/bruno/javaEE-workspace/hibernate/src/hibernate.cfg.xml
	at org.eclipse.wst.xsl.jaxp.debug.invoker.internal.JAXPSAXProcessorInvoker.transform(JAXPSAXProcessorInvoker.java:214)
	... 2 more