public class GeraTabelas {
public static void main(String[] args) {
// Cria uma configuração para a classe Produto
AnnotationConfiguration cfg = new AnnotationConfiguration();
cfg.addAnnotatedClass(Produto.class);
new SchemaExport(cfg).create(true, false);
}
}
Porém, quando executo main, não acontece nada. Não mostra nada, nem mensagem de erro e nem cria nenhuma
tabela. Eu copiei os exemplos iguaizinhos aos da apostila da Caelum. Gostaria de saber se alguém pode me dar um help. Grato.
Ah sim, a classe tem o Entity já, é que eu não colei certo. Mesmo assim não funcionou, continua a mesma coisa:
não acontece absolutamente nada, nem sequer mensagem de erro.
Cara, eu não tenho o arquivo hibernate.cfg.xml.
Pelo que entendi na apostila, quando usamos Annotations não usamos esse arquivo,
mas criamos uma instância de AnnotedClass, conforme a classe GeraTabela. Pelo que entendi,
o método addAnnotedClass já faz isso.
Na Apostila não tem esse arquivo, só o Hibernate.properties mesmo. Será que é isso?
Aí galera, eu fiz os reparos necessários, porém ainda não funcionou. O Banco teste já existe e tal, adicionei a linha que o amigo que tem um avatar de robozinho (foi mal, esqueci seu nick) me disse, mas ainda nao obtive êxito. Quanto a não aparecer nada no console do Eclipse, estava faltando configurar o log4j e adicionar a biblioteca, daí agora eu vejo o que tá acontecendo.
Engraçado que em algumas partes do log aparece algo do tipo:
"exporting Schema to database"
"echoing all SQL code"
"export Schema to database complete"
Parece que vai, mas não vai. Daí eu testei a conexão com o Banco, colocando minha senha errada de propósito no Hibernate.properties, mas deu connection refused. Ou seja, ele conecta ao banco.
Mas vendo os logs, atentei para uma outra coisa:
"Hibernate Validator not found: ignoring"
Será que falta esse carinha? Engraçado que na própria documentação diz que ele não é necessário.
Espero que continuem me ajudando. Grato a todos que me responderam até aqui.
Oi egamorim , pior que eu fiz viu. Já tô começando a pensar que pode ser pau de import. Eu estou só com o hibernate-core e o hibernate-annotations. Só eles dois são o suficiente?
@Entity
public class Produto {
@Id
@GeneratedValue
private Long id;
private String nome;
private String descricao;
private Double preco;
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 getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public Double getPreco() {
return preco;
}
public void setPreco(Double preco) {
this.preco = preco;
}
}
Minha classe GeraTabelas:
public class GeraTabelas {
public static void main(String[] args) {
// Cria uma configuração para a classe Produto
AnnotationConfiguration cfg = new AnnotationConfiguration();
cfg.addAnnotatedClass(Produto.class);
new SchemaExport(cfg).create(true, true);
}
}
Acho que no código tá tudo certo. Talvez o problema seja o alinhamento de Saturno com Plutão, ou uma parte do Cosmos que explodiu e se perdeu em camadas dispersas de tempo contíguo.
Eu realmente não sei o que está acontecendo. Só sei que a IDE continua a rir de mim, rsrs Quais os imports que vocês usam?
Vou tentar fazer isso lgweb . Eu só fiquei com uma dúvida relacionada aos imports:
Na pasta hibernate-distribution/lib tem uma pasta chamada required. Pela Documentação o Hibernate deve ter os arquivos dessa pra funcionar.
Lá tem um arquivo chamado sl4j-api.jar. E na pasta raíz do hibernate (hibernate-distribution) tem o arquivo hibernate3. Ok.
Já na pasta hibernate-annotations/lib tem um monte de arquivo tbm, inclusive um repeteco do sl4j-api.jar e mais um hibernate-core.jar.
Dúvida: O que é repetido e o que não é? O que eu devo realmente adicionar?
Consegui Resolver o problema! Eu vi como o NetBeans organizava as bibliotecas pra poder montar igual no Eclipse. Além disso, precisei fazer umas pequenas alterações no meu projeto:
Primeiro:
Estava colocando tudo na pasta src, mas mudei. Dentro da pasta src criei um novo pacote, que contém as minhas classes. Na pasta src ficou o hibernate.properties
Segundo:
Na classes Produto, estava anotando assim: "@hibernate.annotations.Entity"
Troquei para a anotação: “@javax.persistence.Entity”
Terceiro:
Acho que eu havia falado algo sobre ter dúvida dos arquivos slf4j.jar, que vem tanto no hibernate como no hibernate-annotations. Eu não os adicionei de nenhuma dessas pastas. Eu tive a impressão de eles estarem dando conflito. Então baixei o slf4j e lá tem tudo atualizado pra mim. Os jars ficaram organizados assim:
Da pasta hibernate-annotations/lib:
dom4j.jar
ejb3-persistence.jar
hibernate-commons-annotations.jar
hibernate-core.jar
Da Pasta hibernate-distribution:
hibernate3.jar
Da Pasta hibernate-distribution/lib/required:
antlr-2.7.6
commons-collections-3.1
dom4j-1.6.1.jar
javassist-3.9.0.GA
jta-1.1
Da Pasta hibernate-distribution/lib/optional/ehcache:
ehcache.jar
hibernate-distribution/lib/bytecode/cglib:
cglib.jar
Da pasta hibernate-entity-manager:
hibernate-entity-manager.jar
Da pasta hibernate-entity-manager/lib:
hibernate-annotations.jar
Da pasta slf4j-1.5.8:
slf4j-api-1.5.8.jar
slf4j-simple-1.5.8.jar
log4j-over-slf4-1.5.8.jar
Além, claro, do mysql-connector
O resto ficou como antes mesmo. Obrigado a todo mundo que me ajudou até aqui. Sou grato a todos.
Estou com o mesmo problema, estou utilizando o banco de dados Derby (em memória), e ao que me parece o hibernate não está conseguindo gerar a minha estrutura de banco de dados, que é composta por (schema.tabela), sendo que possuo diversos Schemas em todo o Banco de dados. No Sistema Utilizamos o Postgresql, porém estamos adotando a técnica do TDD (Test Driven Development), e para agilizar este processo optamos por utilizar um banco em memória (HSQLDB ou DERBY). Porém não estamos conseguindo da continuidade, devido a esse problema, vou postar a excessão gerada.
Se alguém souber ou puder ajudar, agradeço.
Excessão Gerada :
[quote] Caused by: org.hibernate.exception.SQLGrammarException: could not insert: [br.fpf.laboratorio.entitybean.TipoAmostra]
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.id.insert.AbstractSelectingDelegate.performInsert(AbstractSelectingDelegate.java:40)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2163)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2643)
at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:51)
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:279)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:298)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:181)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:107)
at org.hibernate.ejb.event.EJB3PersistEventListener.saveWithGeneratedId(EJB3PersistEventListener.java:49)
at org.hibernate.event.def.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:131)
at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:87)
at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:38)
at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:618)
at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:592)
at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:596)
at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:213)
… 30 more
Caused by: java.sql.SQLSyntaxErrorException: O esquema ‘LABORATORIO’ não existe
at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedPreparedStatement.(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedPreparedStatement20.(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedPreparedStatement30.(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedPreparedStatement40.(Unknown Source)
at org.apache.derby.jdbc.Driver40.newEmbedPreparedStatement(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown Source)
at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:505)
at org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:94)
at org.hibernate.id.insert.AbstractSelectingDelegate.performInsert(AbstractSelectingDelegate.java:30) [/quote]