2011-07-14 18 views
7

Uzun süredir bundan sıkıldım. Bu hatanın nedenini bilmiyorum.[Hazırda Beklet] Hata: varlık sınıfı bulunamadı:

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> 

Ben MySQL 5.5 kullanmak İşte benim dosyalarıdır.

aşağıdaki hatayı alıyorum:

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 main.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:

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 

Bu benim sınıfları şunlardır

cevap

21

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

} 
Belki eşleme dosyası tam ama akıllıca diğeri değil olması gerektiği:

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

=> Ben tam belirtmek için mantıklı düşünmek

1

(ambalajlı) tam nitelikli sınıf adını ayarlamanız gerekir ulaşım kolaylığı varlık sınıfı adı:

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

haritalama etiketini kullanarak hazırda configeration dosyasındaki bir varlık sınıfları olarak kullanarak sınıfını söz unutmayın !!

Örnek:

<session-factory> 
//database configeration goes here 

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

Stijn Geukens sağ cevaplar, ama bu soru hakkında daha fazla bilgi işaret etmek istiyorum.

bu soruna neden biliyor iki nedeni vardır: Stijn Geukens cevapları gibi,

  1. İlk bulunmayan varlık sınıfını, Kişisel hazırda haritalama, etiket sınıfı için name özelliğinin değeri doğru değil should İleride paketli Java sınıfı ol.
  2. İkincisi, Java sınıfınızda boole dosyası varsa, bu alan is ile başlayamaz. Aksi takdirde hazırda bekletme, Java Hata Ayıklama modunu veya Çalıştır modunu çalıştırdığınızda getter method is not found... istisnası atar. projenizi Server Application olarak çalıştırırsanız, ileti entity class not found olur. Uzun bir süre beni şaşırtmıştı.Böylece boolean alanınızı is ile belirtin.
İlgili konular