Hibernate

Estou estudando Hibernane pela apostila da K19

Estou fazendo uma atividade…
Mais está dando erro
Codigo:

[code]import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

public class GeraTabelas {
public static void main(String[] args) {
EntityManagerFactory factory =
Persistence.createEntityManagerFactory(“livraria”);
factory.close();

}

}[/code]

Erro:

Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named livraria at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:32) at GeraTabelas.main(GeraTabelas.java:7)

Alguem pode mi ajudar??

ps: Precisa das outras classes?

quando da esse erro, é que não existe a classe de acesso ao banco. Melhor dizendo… A entidade verifica se vc adicionou ela no hibernate.cfg.xml ou se já foi criada a entidade.

Na verdade falta configurar o arquivo persistence.xml, ou ele não está no diretório correto.

Ou então o nome no seu persistence.xml está diferente do nome declarado no seu EntityManager. Confere aí.

Cara eu fiz o seguinte:
persistence.xml:

<?xml version="1.0" encoding="UTF-8"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/&#8592; ns/persistence/persistence_1_0.xsd" version="1.0"> <persistence-unit name="livraria" transaction-type="RESOURCE_LOCAL"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <properties> <property name="hibernate.dialect" value="org.hibernate.dialect.&#8592; MySQL5InnoDBDialect"/> <property name="hibernate.hbm2ddl.auto" value="create"/> <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver&#8592; "/> <property name="javax.persistence.jdbc.user" value="root"/> <property name="javax.persistence.jdbc.password" value="root"/> <property name="javax.persistence.jdbc.url" value="jdbc:mysql://&#8592; localhost:3306/livraria"/> </properties> </persistence-unit> </persistence>

Classe editora:

@Entity public class Editora { @Id @GeneratedValue private Long id; private String nome; private String email; // GETTERS AND SETTERS }

log4j.properties:

log4j.rootCategory=INFO, CONSOLE log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=%r [%t] %-5p %c - %m%n

Classe gera tabela:

public class GeraTabelas { public static void main(String[] args) { EntityManagerFactory factory = Persistence.createEntityManagerFactory("livraria"); factory.close() } }

Só isso que tem na apostila… ta faltando algo??

Troca transaction-type=“RESOURCE_LOCAL”
por transaction-type=“JTA”

E tenha certeza de que seu arquivo persistence.xml está indo no arquivo WAR/EAR.

A apostila diz pra criar um pasta META-INF em src e colocar o persistence.xml

[quote=jakefrog]Troca transaction-type=“RESOURCE_LOCAL”
por transaction-type=“JTA”

E tenha certeza de que seu arquivo persistence.xml está indo no arquivo WAR/EAR.[/quote]

Eu troquei e o erro continua…
Como eu tenho certeza que o arquivo… está indo no arquivo WAR/EAR??

Não entendi oque tem haver… =S
São o mesmo jar’s que estão errado?

vc tem o jar do driver do mysql no seu projeto?

t+

[quote=alissonvla]vc tem o jar do driver do mysql no seu projeto?

t+[/quote]
Sim!
Segui a estrutura do meu projeto:

xandi_m5

seu problema esta na parte de persistência dos dados.

ta usando hibernate? verifica se os arquivos de configuração estão corretos;
suas entidades estão anotadas corretamente?
como vc cria o banco? as tabelas estão sendo criadas corretamente?

att,

cara,

baixe essa versão do hibernate e troque no seu projeto,

http://sourceforge.net/projects/hibernate/files/hibernate3/3.6.8.Final/

t+

[quote=pedruhenrik]xandi_m5

seu problema esta na parte de persistência dos dados.

ta usando hibernate? verifica se os arquivos de configuração estão corretos;
suas entidades estão anotadas corretamente?
como vc cria o banco? as tabelas estão sendo criadas corretamente?

att,[/quote]

Sim, estou.
Meu arquivo de configuração e entidades esta igual o da apostila(copiei e colei).
Meu banco está criado(cria ele logo no começo da apostila).
As tabelas não estão sendo criadas por causa do erro… mais acredito que o codigo para cria-la esteja certa…

[quote=alissonvla]cara,

baixe essa versão do hibernate e troque no seu projeto,

http://sourceforge.net/projects/hibernate/files/hibernate3/3.6.8.Final/

t+[/quote]

Tiro todos os jar’s que estão… e coloco todos que estão no hibernate 4 ???

naooo,

vc colocou essa versão do hibernate, pois vc tem usar uma versão que implemente JPA 2.

t+

[quote=alissonvla]naooo,

vc colocou essa versão do hibernate, pois vc tem usar uma versão que implemente JPA 2.

t+[/quote]

Então a versão que vc disse… implementa JPA2??
Na versão que vc deu tem mts jar’s e eu fiquei perdido em quando ou não colocar :s

cara,

tava olhando seu codigo e vi uma coisa que pode ser o erro, vc ta usando no persitence.xml o cabeçalho da versão 1.0 e vc ta com os jar do 2.0, segue o cabelhaço do 2.0

<persistence version="2.0"
	xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">

t+

Deu outro erro agora :S

Exception in thread "main" java.lang.NoClassDefFoundError: GeraTabelas Caused by: java.lang.ClassNotFoundException: GeraTabelas at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:248) Could not find the main class: GeraTabelas. Program will exit.

Mais acho que esse erro foi pq eu fiz besteira ;;
Vou refazer o projeto incluindo sua dica… mais só vo fazer isso de noite pq eu tenho que sair agora :confused:

Vlw pela ajuda!!!