Pessoal,
Estou tentando criar a tabela pelo hibernate e não gera nenhuma msg de erro, mas tb não cria a tabela. Segue:
GeraTabelas.java
public class GeraTabelas {
public static void main(String[] args) {
Configuration configuration = new AnnotationConfiguration();
configuration.configure();
SchemaExport se = new SchemaExport(configuration);
se.create(true, true);
System.out.println("ok");
}
}
hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//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.password"></property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/banco</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<mapping class="br.org.minhaurl.jdbc.modelo.Usuario"/>
</session-factory>
</hibernate-configuration>
Usuario.java
@Entity
public class Usuario {
@Id
@GeneratedValue
private long id;
private String nome;
private String usuario;
private String senha;
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 String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
public String getUsuario() {
return usuario;
}
public void setUsuario(String usuario) {
this.usuario = usuario;
}
}
coloca isso no .cfg
<property name="hibernate.hbm2ddl.auto">create</property>
ele cria e recria o shema…
[quote=soudaniel_01]coloca isso no .cfg
<property name="hibernate.hbm2ddl.auto">create</property>
ele cria e recria o shema…[/quote]
Mesma coisa
a única coisa q aparece é isso:
Crie o arquivo log4j.properties, coloque-o na pasta onde tem o código fonte, copie o conteúdo abaixo e cole no arquivo.
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=debug
log4j.logger.org.hibernate.type=debug
log4j.logger.org.hibernate.tool.hbm2ddl=debug
Esses warnings sumirão e se der algum erro aparecerá no console.
[quote=cesarherrera]Crie o arquivo log4j.properties, coloque-o na pasta onde tem o código fonte, copie o conteúdo abaixo e cole no arquivo.
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=debug
log4j.logger.org.hibernate.type=debug
log4j.logger.org.hibernate.tool.hbm2ddl=debug
Esses warnings sumirão e se der algum erro aparecerá no console.[/quote]
Estranho, aparece como se tivesse sido criado, mas quando vou listar as tabelas não aparece nada. Segue o log:
09:08:34,812 INFO SchemaExport:179 - exporting generated schema to database
09:08:34,812 INFO DriverManagerConnectionProvider:41 - Using Hibernate built-in connection pool (not for production use!)
09:08:34,812 INFO DriverManagerConnectionProvider:42 - Hibernate connection pool size: 20
09:08:34,812 INFO DriverManagerConnectionProvider:45 - autocommit mode: false
09:08:34,828 INFO DriverManagerConnectionProvider:80 - using driver: com.mysql.jdbc.Driver at URL: jdbc:mysql://localhost/banco
09:08:34,828 INFO DriverManagerConnectionProvider:83 - connection properties: {user=root, password=123}
09:08:34,828 DEBUG DriverManagerConnectionProvider:93 - total checked-out connections: 0
09:08:34,828 DEBUG DriverManagerConnectionProvider:109 - opening new JDBC connection
09:08:35,140 DEBUG DriverManagerConnectionProvider:115 - created connection to: jdbc:mysql://localhost/banco, Isolation Level: 4
09:08:35,140 INFO SchemaExport:196 - schema export complete
09:08:35,140 DEBUG DriverManagerConnectionProvider:129 - returning connection to pool, pool size: 1
09:08:35,140 INFO DriverManagerConnectionProvider:147 - cleaning up connection pool: jdbc:mysql://localhost/banco
Deixa eu tentar adivinhar… você está utilizando o Eclipse, correto? Comigo, a mesma coisa acontece, mas somente do Eclipse. No NetBeans, as tabelas são geradas e aparecem na base de dados corretamente.
Eu também estou procurando uma solução para esse problema, mas ainda não encontrei. Espero que aqui consigamos encontrar alguma saída.
Putz… tem um jeito de mudar o autocommit para true ou dar um commit? Pode ser isso!
[quote=felipealbuquerque][quote]
09:08:34,812 INFO DriverManagerConnectionProvider:45 - autocommit mode: false
[/quote]
Putz… tem um jeito de mudar o autocommit para true ou dar um commit? Pode ser isso![/quote]
Coloquei
<property name="hibernate.connection.autocommit">true</property>
e mesmo assim não vai:
putz…q problema chato, nem tem erro no console nem nada…
Mapeia na criação para ver se funciona
[code]
public class GeraTabelas {
public static void main(String[] args) {
AnnotationConfiguration configuration = new AnnotationConfiguration();
configuration.addAnnotedClass(br.org.minhaurl.jdbc.modelo.Usuario.class);
SchemaExport se = new SchemaExport(configuration);
se.create(true, true);
System.out.println("ok");
}
}[/code]
O pior que nunca tive esse problema com o cfg.xml
[quote=Mark_Ameba]Mapeia na criação para ver se funciona
[code]
public class GeraTabelas {
public static void main(String[] args) {
AnnotationConfiguration configuration = new AnnotationConfiguration();
configuration.addAnnotedClass(br.org.minhaurl.jdbc.modelo.Usuario.class);
SchemaExport se = new SchemaExport(configuration);
se.create(true, true);
System.out.println("ok");
}
}[/code]
O pior que nunca tive esse problema com o cfg.xml[/quote]
Aparece esse erro:
10:54:15,953 INFO Version:15 - Hibernate Annotations 3.2.1.GA
10:54:15,984 INFO Environment:514 - Hibernate 3.2.5
10:54:15,984 INFO Environment:547 - hibernate.properties not found
10:54:15,984 INFO Environment:681 - Bytecode provider name : cglib
10:54:16,000 INFO Environment:598 - using JDK 1.4 java.sql.Timestamp handling
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:233)
at org.hibernate.dialect.Dialect.getDialect(Dialect.java:211)
at org.hibernate.dialect.Dialect.getDialect(Dialect.java:226)
at org.hibernate.tool.hbm2ddl.SchemaExport.(SchemaExport.java:86)
at org.hibernate.tool.hbm2ddl.SchemaExport.(SchemaExport.java:61)
at br.org.xxxxxxxxx.hibernate.GeraTabelas.main(GeraTabelas.java:21)
Mas o dialect ta setado:
dc.rec1
Dezembro 3, 2007, 11:05am
#13
Ja aconteceu algo similar comigo. O que estava errado eram os imports. Tinha importado a classe Persistence de algum pacote do Hibernate e tinha que ser de algum pacote do javax. Se fizer ctrl + shift + o no Eclipse, aparecem os dois.
Mas eu to importando tudo do javax:
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class Usuario {
@Id
@GeneratedValue
private long id;
private String nome;
private String usuario;
private String senha;
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 String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
public String getUsuario() {
return usuario;
}
public void setUsuario(String usuario) {
this.usuario = usuario;
}
}
Acho que o AnnotedClass só funciona com o hibernate.properties
Sera que é um problema de versão da lib do hibernate?
Não sei, nunca tive problemas similares. ^^
Ninguem sabe o motivo de estar ocorrendo isso?
Você adicionou o jar do SGBD? Aqui eu tinha (burramente) me esquecido de adicionar o jar…