2011-07-14 15 views
7

Męczę się tym przez długi czas. Nie wiem, co spowodowało ten błąd. Tutaj są moje pliki:[Hibernacja] Błąd: nie znaleziono klasy jednostki:

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> 

używam MySQL 5.5.

pojawia się następujący błąd:

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 

To są moje zajęcia: 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; 
     } 

} 

Odpowiedz

21

Może twój plik odwzorowania nie jest kompletna, ale innych mądrych powinno być:

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

=> trzeba ustawić pełną nazwę klasy (z pakietu)

1

myślę, że to ma sens, aby podać pełny -qualified jednostka nazwa klasy:

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

nie zapomnij wspomnieć swoją klasę wykorzystując jako podmiot klas w pliku hibernacji configeration pomocą znacznika mapowania !!

Przykład:

<session-factory> 
//database configeration goes here 

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

Stijn Geukens odpowiedzi rację, ale chcę podkreślić, więcej informacji na temat tej kwestii.

Istnieją dwa powody, dla których znam powodujące ten problem: klasę jednostka nie znaleziono

  1. Po pierwsze, w odpowiedzi Stijn Geukens, Twój mapowania Hibernate nie jest w porządku, wartość atrybutu name dla klasy tag powinien być klasą Java z pakietem naprzód. Po drugie, jeśli masz ustawione boolean w twojej klasie Java, to pole nie może zaczynać się od is. W przeciwnym razie hibernacja zgłasza wyjątek getter method is not found... po uruchomieniu przez tryb Java Debug lub tryb Run. Ale jeśli chodzi o projekt internetowy i uruchamiasz swój projekt pod numerem Server Application, wiadomość staje się entity class not found. Przez długi czas byłam zdziwiona. Nie nadawaj swojego pola boolowego z wyprzedzeniem is.
Powiązane problemy