2013-05-20 16 views
7

मैं अपने शिक्षक के दस्तावेज़ द्वारा प्रदान की गई जानकारी का पालन करके एक साधारण जेपीए 2.0 प्रोजेक्ट स्थापित करने की कोशिश कर रहा हूं। मैं इस पर घंटों के लिए रहा हूं, लेकिन कोई फर्क नहीं पड़ता कि मैं क्या करता हूं जब मैं EntityManagerFactory: बनाने का प्रयास करता हूं तो मुझे हमेशा यह अपवाद मिलता है। मुझे इस अपवाद के बारे में कुछ समान प्रश्न मिल गए हैं, लेकिन कोई समाधान नहीं है जो मैं सक्षम हूं काम में जुटना। मुझसे यहां क्या गलत हो रहा है?javax.persistence.PersistenceException: EntityManager के लिए कोई दृढ़ता प्रदाता

मैं ग्रहण (कोई कमांड प्रॉम्प्ट)

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) 

निर्देशिका संरचना

enter image description here

मेरी persistence.xml से इस प्रोजेक्ट बनाया

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

मेरी कक्षा

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

} 

मेरे मेरी परीक्षक (मुख्य) वर्ग

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

जांचें कि कक्षा org.hibernate.ejb.Hibernat ePersistence आपके क्लासपाथ पर है। – JamesB

+0

उत्तर देने के लिए धन्यवाद। मेरा सवाल बेवकूफ लग सकता है लेकिन मैं अपने क्लासपाथ को कैसे देखूं? –

+0

ग्रहण में, अपनी प्रोजेक्ट के साथ, Ctrl + Shift + T दबाएं और कक्षा का नाम टाइप करना प्रारंभ करें। यदि यह सूची में प्रकट नहीं होता है, तो आप जानते हैं कि यह क्लासपाथ पर नहीं है। – JamesB

उत्तर

5

मुझे लगता है कि वर्ग org.hibernate.ejb.Hibernat ePersistence अपने classpath से लापता है। इसे अपने pom.xml में जोड़ें:

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

3.6.10 बदलें। हाइबरनेट के उपयुक्त संस्करण के साथ अंतिम।

+0

पूरी तरह से तय नहीं किया गया है लेकिन त्रुटि संदेश को एक नए त्रुटि संदेश में छोड़ दिया गया है, जो थ्रेड "मुख्य" java.lang में अपवाद कहता है। NoClassDefFoundError: org/slf4j/loggerFactory। लेकिन अब मुझे लगता है कि मुझे यह पता है कि इसे काम करने के लिए कैसे प्राप्त करें –

+0

ऐसा लगता है कि आप slf4j भी खो रहे हैं। – JamesB

+0

नोट: persistence.xml में परिवर्तन को प्रतिबिंबित करने के लिए कक्षा को एक नए पैकेज में ले जाने के बाद मुझे यह अपवाद था। –

0

मुझे एक ही समस्या थी। बहुत सारी खोज के बाद मुझे पता चला कि समाधान ग्रहण बाजार से हैबर ऑब्जेक्ट्स से स्थापित करना था।

संबंधित मुद्दे