org.hibernate.MappingException:未知实体 - 根本原因是什么?

时间:2016-02-17 10:49:36

标签: java hibernate

我是hibernate的新手。我正在按照教程并尝试执行一个简单的代码,但我收到了以下错误。

org.hibernate.MappingException: Unknown entity: 

我正在使用注释和配置文件也完全按照教程完成。我用谷歌搜索但没有得到正确的答案

这是我的代码

package org.anne;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;

public class Demo {

    public static void main(String[] args) {


        Paper p = new Paper();
        p.setPname("indu");

        SessionFactory sf = HibernateUtil.getSessionFactory();
        Session ses = sf.openSession();
        Transaction tr = ses.beginTransaction();
        ses.save(p);
        tr.commit();
        ses.close();
        sf.close();

    }

}

package org.anne;

import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {

    static SessionFactory sf;
    public static SessionFactory getSessionFactory()
    {
        Configuration cf = new Configuration();
        cf.configure("hibernate.cfg.xml");
        StandardServiceRegistryBuilder srv = new StandardServiceRegistryBuilder();
        StandardServiceRegistry sr = srv.applySettings(cf.getProperties()).build();
        sf = cf.buildSessionFactory(sr);
        return sf;


    }

}
package org.anne;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "PAPER")
public class Paper {

    int pid;
    String pname;

    @Id
    @Column(name = "PID")
    @GeneratedValue(strategy = GenerationType.AUTO)
    public int getPid() {
        return pid;
    }
    public void setPid(int pid) {
        this.pid = pid;
    }
    @Column(name = "PNAME")
    public String getPname() {
        return pname;
    }
    public void setPname(String pname) {
        this.pname = pname;
    }



}

<?xml version="1.0"?>
<!DOCTYPE hibernate-configuration SYSTEM "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd" >


<hibernate-configuration>
    <session-factory>
        <property name = "connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name = "connection.url">jdbc:mysql://localhost:3306/test</property>
        <property name = "connection.username">root</property>
        <property name = "connection.password">abc123</property>
        <property name = "hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
        <property name = "hibernate.show_sql">true</property>


        <mapping class = "org.anne.Paper" />

    </session-factory>
</hibernate-configuration>

1 个答案:

答案 0 :(得分:0)

如果您自己启动Hibernate,请确保使用AnnotationConfiguration类而不是Configuration类。以下是使用(传统)HibernateUtil方法的示例:

package hello;

import org.hibernate.*;
import org.hibernate.cfg.*;
import test.*;
import test.animals.Dog;

public class HibernateUtil {

private static final SessionFactory sessionFactory;
    static {
        try {
            sessionFactory = new AnnotationConfiguration()
                    .configure().buildSessionFactory();
        } catch (Throwable ex) {
            // Log exception!
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static Session getSession()
            throws HibernateException {
        return sessionFactory.openSession();
    }
}

更多https://docs.jboss.org/hibernate/stable/annotations/reference/en/html/ch01.html#setup-configuration