2011-07-14 24 views
7

मैं इसे लंबे समय से थक गया हूं। मुझे नहीं पता कि इस त्रुटि के कारण क्या हुआ।[हाइबरनेट] त्रुटि: इकाई वर्ग नहीं मिला:

Uzytkownik.hbm.xml

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
            "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<hibernate-mapping> 
<class name="Uzytkownik" table="uzytkownicy"> 
    <id column="id" name="id" type="int"/> 
    <property column="login" generated="never" lazy="false" name="login" type="string"/> 
    <property column="haslo" generated="never" lazy="false" name="haslo" type="string"/> 
</class> 
</hibernate-mapping> 

hibernate.cfg.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 
             "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 
<hibernate-configuration> 
<session-factory name=""> 
    <property name="hibernate.connection.driver_class">org.gjt.mm.mysql.Driver</property> 
    <property name="hibernate.connection.password">root</property> 
    <property name="hibernate.connection.url">jdbc:mysql://localhost/sprawozdania</property> 
    <property name="hibernate.connection.username">root</property> 
    <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property> 
    <mapping resource="com/vaannila/uzytkownik/Uzytkownik.hbm.xml"/> 
</session-factory> 
</hibernate-configuration> 

मैं mysql 5.5 का उपयोग यहाँ मेरी फ़ाइलें हैं।

मैं निम्नलिखित त्रुटि मिलती है:

Exception in thread "main" java.lang.ExceptionInInitializerError 
    at com.vaannila.util.HibernateUtil.<clinit>(HibernateUtil.java:14) 
    at com.vaannila.uzytkownik.Main.saveUzyt(Main.java:22) 
    at com.vaannila.uzytkownik.Main.main(Main.java:16) 
Caused by: org.hibernate.MappingException: entity class not found: Uzytkownik 

यह मेरा वर्ग हैं: main.java

package com.vaannila.uzytkownik; 

import org.hibernate.HibernateException; 
import org.hibernate.Session; 
import org.hibernate.Transaction; 

import javax.persistence.Entity; 
import com.vaannila.util.HibernateUtil; 
public class Main { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     Main obj = new Main(); 
     String uzytkownikLogin = obj.saveUzyt("Adam", "Malysz"); 

    } 


    public String saveUzyt(String login, String haslo){ 
     Session session = HibernateUtil.getSessionFactory().openSession(); 
     Transaction transaction = null; 
     String uzytLog = null; 
     try { 
      transaction = session.beginTransaction(); 
      Uzytkownik uzyt = new Uzytkownik(); 
      uzyt.setLogin(login); 
      uzyt.setHaslo(haslo); 
      uzytLog = (String) session.save(uzyt); 
      transaction.commit(); 
     } catch (HibernateException e) { 
      transaction.rollback(); 
      e.printStackTrace(); 
     } finally { 
      session.close(); 
     } 
     return uzytLog; 
    } 



} 

Uzytkownik.java:

package com.vaannila.uzytkownik; 
// default package 
// Generated 2011-07-14 13:39:18 by Hibernate Tools 3.4.0.CR1 

/** 
* Uzytkownik generated by hbm2java 
*/ 
public class Uzytkownik implements java.io.Serializable { 

    private int id; 
    private String login; 
    private String haslo; 

    public Uzytkownik() { 
    } 

    public Uzytkownik(int id) { 
     this.id = id; 
    } 

    public Uzytkownik(int id, String login, String haslo) { 
     this.id = id; 
     this.login = login; 
     this.haslo = haslo; 
    } 

    public int getId() { 
     return this.id; 
    } 

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

    public String getLogin() { 
     return this.login; 
    } 

    public void setLogin(String login) { 
     this.login = login; 
    } 

    public String getHaslo() { 
     return this.haslo; 
    } 

    public void setHaslo(String haslo) { 
     this.haslo = haslo; 
    } 

} 

HibernateUtil.java:

package com.vaannila.util; 

import org.hibernate.SessionFactory; 
import org.hibernate.cfg.Configuration; 


    public class HibernateUtil { 
     private static final SessionFactory sessionFactory; 
     static { 
      try { 
       sessionFactory = new Configuration().configure().buildSessionFactory(); 
      } catch (Throwable ex) { 
       System.err.println("Initial SessionFactory creation failed." + ex); 
       throw new ExceptionInInitializerError(ex); 

      } 

     } 
     public static SessionFactory getSessionFactory() { 
      return sessionFactory; 
     } 

} 

उत्तर

21

हो सकता है कि आपके मैपिंग फ़ाइल पूरा लेकिन बुद्धिमान अन्य नहीं है, यह होना चाहिए:

<class name="com.vaannila.uzytkownik.Uzytkownik" table="uzytkownicy"> 

=> (पैकेज के साथ)

1

पूरी तरह से योग्य वर्ग के नाम सेट करने के लिए मुझे लगता है कि यह समझ में आता है पूर्ण निर्दिष्ट करने की आवश्यकता -qualified इकाई वर्ग के नाम:

<class name="com.vaannila.uzytkownik.Uzytkownik" table="uzytkownicy"> 
0

मत भूलना हाइबरनेट configeration फ़ाइल में एक इकाई वर्ग के रूप में उपयोग करते हुए मानचित्रण टैग का उपयोग कर अपने वर्ग का उल्लेख !!

उदाहरण:

<session-factory> 
//database configeration goes here 

<mapping class="org.fbis.models.Form3A"/> 
</session-factory> 
0

टिजिन Geukens सही जवाब देता है, लेकिन मैं इस सवाल के बारे में अधिक जानकारी का कहना चाहते हैं।

वहाँ मैं इस समस्या का कारण पता दो कारण हैं: इकाई वर्ग नहीं, पाया

  1. पहले के रूप में टिजिन Geukens जवाब, आपका हाइबरनेट मानचित्रण नहीं सही, टैग वर्ग के लिए नाम विशेषता के मान है चाहिए पैकेज के साथ जावा क्लास बनें।
  2. दूसरा, यदि आपके पास अपनी जावा क्लास में बूलियन दायर किया गया है, तो यह फ़ील्ड is से शुरू नहीं हो सकता है। अन्यथा, हाइबरनेट जावा डीबग मोड या रन मोड द्वारा चलाए जाने पर getter method is not found... अपवाद फेंकता है। लेकिन जब यह वेब प्रोजेक्ट की बात आती है और आप अपनी परियोजना को Server Application के रूप में चलाते हैं, यह संदेश entity class not found बन जाता है। इसने मुझे लंबे समय तक परेशान कर दिया। इसलिए is के साथ अपने बूलियन फ़ील्ड को नाम न दें।
संबंधित मुद्दे