错误:未找到实体类:
我很久没厌倦了。 我不知道是什么原因造成了这个错误。 这是我的文件:
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回答正确,但我想指出有关这个问题的更多信息。
我知道导致此问题的原因有两个: 找不到实体类
- 首先,As Stijn Geukens回答说,你的Hibernate映射不正确,标记类的name属性值应该是带有包前面的Java类。
- 其次,如果你的Java类中有boolean字段,那么这个字段不能以
is
开头。否则,hibernate会抛出exception的getter method is not found...
当它被Java Debug模式或Run模式运行时。但是当它出现时到web项目,你运行你的项目作为Server Application
,消息成为entity class not found
它让我困惑很长一段时间。所以不要将你的布尔字段命名is
提前。