Hibernate

14 respostas
leandroleo

Olá pessoal, quando vou gerar a tabela dinamicamente o hibernate da o seguinte erro:

Exception in thread “main” javax.persistence.PersistenceException: No Persistence provider for EntityManager named livraria

seguem abaixo meu mapiamento com JPA

package br.com.jpa.model;

import javax.persistence.*;

@Entity
public class Editora {

	@Id @GeneratedValue
	private Long id;
	private String nome;
	private String email;
	
	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 getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
		
}
<?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/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.MySQL5InnoDBDialect" />
			<property name="hibernate.hbm2ddl.auto" value="create"/>
			<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
			<property name="javax.persistence.jdbc.user" value="root"/>
			<property name="javax.persistence.jdbc.password" value=""/>
			<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/livraria" />
		</properties>
	</persistence-unit>
	
</persistence>

O QUE PODE ESTAR ERRADO ?

DESDE JA OBRIGADO!

14 Respostas

P

Tenta assim.
Vc esqueceu muitas anotações table,column se naum tiver naum gera automático.

package br.com.jpa.model;  
      
    import javax.persistence.*;  
      
    @Entity 
     @table(name="nome da sua tabela") 
    public class Editora {  
      
        @Id
         @GeneratedValue(strategy = GenerationType.AUTO)
        private Long id; 
            @Column(name = "nome da coluna")
       private String nome;
           @Column(name = "nome da coluna")  
       private String email;  
         
       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 getEmail() {  
           return email;  
       }  
       public void setEmail(String email) {  
           this.email = email;  
      }  
             
   }
leandroleo

Obrigado, consegui resolver.

mas gera sim.

o problema estava onde eu tinha colocado meu arquivo persistence.xml

eu tinha colocando na pasta META-INF dentro de webContent. e na verdade deve ficar na pasta META-INF dentro de src.

foi só alterar isso e funcionou.

vlw

P

Bacana.

Mas na boa pratica e sempre bom vc colocar todos as anotações.

mas se funfou bacana.

leandroleo

Entendi, serei mais cuidadoso de agora em diante…

brigadão…

X

leandroleo:
Obrigado, consegui resolver.

mas gera sim.

o problema estava onde eu tinha colocado meu arquivo persistence.xml

eu tinha colocando na pasta META-INF dentro de webContent. e na verdade deve ficar na pasta META-INF dentro de src.

foi só alterar isso e funcionou.

vlw


O meu arquivo está no lugar certo, mais ta dando esse mesmo erro… Pode ajudar??

leandroleo

Cara, posto seu mapiamento, seu persistence, e onde vc cria o seu EntityManager. Ai facilita, talvez seu erro seja o mesmo, mas está sendo causado por algo diferente!

Posta ai.

abraço

X
leandroleo:
Cara, posto seu mapiamento, seu persistence, e onde vc cria o seu EntityManager. Ai facilita, talvez seu erro seja o mesmo, mas está sendo causado por algo diferente!

Posta ai.

abraço

Classe Editora:
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class Editora {
	@Id
	@GeneratedValue
	private Long id;
	private String nome;
	private String email;

	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 getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

}
Classe gerador de tabela:
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

public class GeraTabelas {
	public static void main(String[] args) {
		EntityManagerFactory factory = Persistence
				.createEntityManagerFactory("livraria");
		factory.close();
	}
}
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/ns/persistence/persistence_1_0.xsd" version="1.0">

    <persistence-unit name="livraria" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <class>br.com.exemplo.MinhaEntidade</class>

        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
            <property name="hibernate.hbm2ddl.auto" value="create"/>
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
            <property name="javax.persistence.jdbc.user" value="root"/>
            <property name="javax.persistence.jdbc.password" value=""/>
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/livraria"/>
        </properties>
    </persistence-unit>

</persistence>
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

Todo meu projeto, tudo de acordo com a apostila...
Ha! eu tinha criado um poste do meu problema
http://www.guj.com.br/java/257588-hibernate- (mais todo meu problema vc ja sabe...=D)

leandroleo
<class>br.com.exemplo.MinhaEntidade</class>

Essa parte do código acima realmente está no seu persistence ??

O seu banco de dados foi criado ?

o banco “livraria” ?

X

leandroleo:
<class>br.com.exemplo.MinhaEntidade</class>

Essa parte do código acima realmente está no seu persistence ??

O seu banco de dados foi criado ?

o banco “livraria” ?

Isso ta “ligando” para a classe MinhaEntidade não?
Se for eu não tenho essa classe…

X

leandroleo:
<class>br.com.exemplo.MinhaEntidade</class>

Essa parte do código acima realmente está no seu persistence ??

O seu banco de dados foi criado ?

o banco “livraria” ?

Agora que eu entendi.
Não está não
persistence:(esse ai eu peguei de outra lugar e esqueci de trocar o original ta em baixo ;; )

<?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="" /> <property name="javax.persistence.jdbc.url" value="jdbc:mysql://&#8592; localhost:3306/livraria" /> </properties> </persistence-unit> </persistence>

X

E sim meu banco está criado.


X

leandroleo:
<class>br.com.exemplo.MinhaEntidade</class>

Essa parte do código acima realmente está no seu persistence ??

O seu banco de dados foi criado ?

o banco “livraria” ?

Ainda estou com o problema…
Sabe mais alguma coisa??
Posso li enviar meu projeto pra vc olhar??

leandroleo

Pode enviar sim, [email removido]

abraço

X

leandroleo:
Pode enviar sim, [email removido]

abraço

O erro mudo agora é esse:

Exception in thread "main" javax.persistence.PersistenceException: [PersistenceUnit: livraria] Unable to build EntityManagerFactory at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:892) at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:56) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:48) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:32) at GeraTabelas.main(GeraTabelas.java:7) Caused by: org.hibernate.HibernateException: JDBC Driver class not found: com.mysql.jdbc.Driver&#8592; at org.hibernate.connection.DriverManagerConnectionProvider.configure(DriverManagerConnectionProvider.java:89) at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:137) at org.hibernate.ejb.InjectionSettingsFactory.createConnectionProvider(InjectionSettingsFactory.java:51) at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:91) at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2163) at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2159) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1383) at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:954) at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:883) ... 4 more Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver&#8592; 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) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:169) at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:192) at org.hibernate.connection.DriverManagerConnectionProvider.configure(DriverManagerConnectionProvider.java:84) ... 12 more

E eu já tinha colocado no SkiDriver… mandei pro seu e-maul o link(do projeto no SkyDriver) pq não tava upando o projeto…
Link:
https://skydrive.live.com/redir.aspx?cid=d6b369f16014e7e3&resid=D6B369F16014E7E3!130

Criado 4 de abril de 2011
Ultima resposta 10 de nov. de 2011
Respostas 14
Participantes 3