Java [Hibernate]错误:找不到实体类:

Java [Hibernate]错误:找不到实体类:,java,mysql,eclipse,hibernate,Java,Mysql,Eclipse,Hibernate,我已经厌倦了很久了。我不知道是什么导致了这个错误。这是我的档案: Uzytkownik.hbm.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.n

我已经厌倦了很久了。我不知道是什么导致了这个错误。这是我的档案:

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

}

可能您的映射文件不完整,但从其他方面看,应该是:

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


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

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

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

别忘了提到您的类在hibernate配置文件中使用映射标记作为实体类使用

例如:

<session-factory>
//database configeration goes here

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

//这里是数据库配置

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

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

  • 首先,正如Stijn Geukens所回答的,您的Hibernate映射是不正确的,tag类的name属性的值应该是前面有包的Java类
  • 其次,如果您的Java类中有布尔字段,则此字段不能以
    is
    开头。否则,当通过Java调试模式或运行模式运行时,hibernate会抛出一个异常
    getter方法未找到…
    。但是当涉及web项目时,您作为
    服务器应用程序运行项目时,消息变成
    实体类未找到
    。这让我困惑了很长一段时间。因此不要在前面用
    is
    命名布尔字段
  • <class name="com.vaannila.uzytkownik.Uzytkownik" table="uzytkownicy">
    
    <class name="com.vaannila.uzytkownik.Uzytkownik" table="uzytkownicy">
    
    <session-factory>
    //database configeration goes here
    
    <mapping class="org.fbis.models.Form3A"/>
    </session-factory>