错误:未找到实体类:

我很久没厌倦了。 我不知道是什么原因造成了这个错误。 这是我的文件:

Uzytkownik.hbm.xml

         

hibernate.cfg.xml中:

     org.gjt.mm.mysql.Driver root jdbc:mysql://localhost/sprawozdania root org.hibernate.dialect.MySQL5Dialect    

我用的是mysql 5.5。

我收到以下错误:

  Exception in thread "main" java.lang.ExceptionInInitializerError at com.vaannila.util.HibernateUtil.(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; } } 

也许您的映射文件不完整,但其他方面应该是:

  

=>需要设置完全限定的类名(带包)

我认为指定完全限定的实体类名称是有意义的:

  

不要忘记使用映射标记在hibernate configeration文件中使用作为实体类的类!

例:

  //database configeration goes here   

Stijn Geukens回答正确,但我想指出有关这个问题的更多信息。

我知道导致此问题的原因有两个: 找不到实体类

  1. 首先,As Stijn Geukens回答说,你的Hibernate映射不正确,标记类的name属性值应该是带有包前面的Java类。
  2. 其次,如果你的Java类中有boolean字段,那么这个字段不能以is开头。否则,hibernate会抛出exception的getter method is not found...当它被Java Debug模式或Run模式运行时。但是当它出现时到web项目,你运行你的项目作为Server Application ,消息成为entity class not found它让我困惑很长一段时间。所以不要将你的布尔字段命名is提前。