Hibernate

22 respostas
X

Estou estudando Hibernane pela apostila da K19

Estou fazendo uma atividade... Mais está dando erro Codigo:
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

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

	}
}
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?

22 Respostas

D

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.

R

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

H

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

X

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

H

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

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

X

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

X

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.

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

Y
X

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

A

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

t+

X

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

t+


Sim!
Segui a estrutura do meu projeto:

P

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,

A

cara,

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

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

t+

X

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,

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…

X

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+

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

A

naooo,

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

t+

X

alissonvla:
naooo,

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

t+

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

A

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+

X

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

C

Lembro que uma vez tive esse problema…
Resolvi trocando os jars da minha aplicação

=D

X

carolino:
Lembro que uma vez tive esse problema…
Resolvi trocando os jars da minha aplicação

=D


Qual jar’s vc coloco??

C

Quando tava tendo esse problema eu tava
utilizando a ultima versão do hibernate,
só que tinha alguns bugs e tava dando diversar incompatibilidades…
Imagino que você deve ta tentando utilizar a ultima versão do hibernate tb…
se esse for o caso, tenta ver qual é a ultima versão estavel do hibernate
e troca os seus jars por essa versão mais estável
Na época lembro que a versão mais estável era a 3.1

Criado 7 de novembro de 2011
Ultima resposta 20 de nov. de 2011
Respostas 22
Participantes 8