2013-05-20 44 views
7

Öğretmemin belgeleri tarafından sağlanan bilgileri izleyerek basit bir jpa 2.0 projesi kurmaya çalışıyorum. Şu an saatlerce çalışıyorum, ama ne yaparsam yapayım EntityManagerFactory yaratmaya çalıştığımda her zaman bu istisnai durumum var: Bu istisna ile ilgili bir kaç tane benzer soru buldum ama yapabileceğim çözümler yok işe almak için. Burada neyi yanlış yapıyorum? javax.persistence.PersistenceException: Yok EntityManager için kalıcılık sağlayıcısı

Eclipse (hayır komut istemi)

Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named course 
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:56) 
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:34) 
    at message.SaveMessage.main(SaveMessage.java:8) 

dizin yapısı

enter image description here

benim persistence.xml bu projeyi oluşturdu

<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_2_0.xsd" 
    version="2.0"> 
    <persistence-unit name="course" 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="update" /> 

      <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" /> 
      <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/StudentDB" /> 
      <property name="javax.persistence.jdbc.user" value="root" /> 
      <property name="javax.persistence.jdbc.password" value="pasapas2005" /> 
     </properties> 
    </persistence-unit> 
</persistence> 

Benim sınıf

package message; 

import java.io.Serializable; 

import javax.persistence.*; 

@Entity 
public class Message implements Serializable { 

    private long id; 
    private String text; 

    public Message() { 

    } 

    public Message(long id, String text) { 
     this.setId(id); 
     this.setText(text); 

    } 

    @Id 
    public long getId() { 
     return id; 
    } 

    public void setId(long id) { 
     this.id = id; 
    } 

    public String getText() { 
     return text; 
    } 

    public void setText(String text) { 
     this.text = text; 
    } 

} 

Benim benim tester (ana) sınıfı

package message; 

import javax.persistence.*; 

public class SaveMessage { 

    public static void main(String[] args) { 
     EntityManagerFactory emf = Persistence.createEntityManagerFactory("course"); 
     EntityManager em = emf.createEntityManager(); 
     EntityTransaction tx = em.getTransaction(); 
     tx.begin(); 

     Message message = new Message(1, "Hello world"); 
     em.persist(message); 
     tx.commit(); 
     em.close(); 
     System.out.println("message saved"); 

    } 

} 
+0

Sınıf org.hibernate.ejb.Hibernat ePersistence sınıfınızda olduğunu kontrol edin. – JamesB

+0

Cevapladığınız için teşekkür ederiz. Sorumum aptalca gelebilir ama sınıf yolumu nasıl kontrol ederim? –

+0

Tutulması sırasında projeniz açıkken, Ctrl + Shift + T tuşlarına basın ve sınıf adını yazmaya başlayın. Listede görünmüyorsa, sınıf yolunda olmadığını biliyorsunuz. – JamesB

cevap

5

Sınıf org.hibernate.ejb.Hibernat ePersistence Sınıfyolu eksik düşünüyorum. senin pom.xml bunu ekleyin:

<dependency> 
<groupId>org.hibernate</groupId> 
<artifactId>hibernate-entitymanager</artifactId> 
<version>3.6.10.Final</version> 
</dependency> 

hazırda uygun sürümüyle 3.6.10.Final değiştirin.

+0

Tamamen düzeltilmemiş, ancak hata mesajının kaybolması, "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory. Ama şimdi sanırım işe nasıl başlayacağını biliyorum –

+0

Siz de slf4j eksiksiniz gibi görünüyor. – JamesB

+0

Not: Bir sınıfı, persistence.xml değişikliğini yansıtmak için eksik yeni bir pakete taşıdıktan sonra bu özel durum vardı. –

0

Aynı sorunu yaşadım. Bir çok aramadan sonra, çözümün sadece eclipse marketplace'ten HiberObjects kurulumunu gerçekleştirdiğini keşfettim.

İlgili konular