[Hibernate]关于Hibernate5.1出现找不到实体类(Exception in thread "main" org.hibernate.MappingException: Unknown entity)

作者 做棵大树 日期 2018-05-28
[Hibernate]关于Hibernate5.1出现找不到实体类(Exception in thread "main" org.hibernate.MappingException: Unknown entity)

最近刚学习了Hibernate框架,老师布置了个作业,让用 Hibernate 4.3 版本的框架来写,但是我的 Myeclipse2017 中,虽然配置了user library,但是总是布置不了环境,于是,就用5.1的版本来做了。 当时报错了这个错了:Exception in thread “main” org.hibernate.MappingException: Unknown entity:beans.Publisher 那,我把代码粘贴一下:

public static void main(String\[\] args) {
    /\*
     \* Hibernate4.3方法
     \* 
    Configuration conf = new Configuration().
            // 不带参数的configure()方法默认加载hibernate.cfg.xml文件,
            // 如果传入abc.xml作为参数,则不再加载hibernate.cfg.xml,改为加载abc.xml
            configure();
    ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings
            (conf.getProperties()).build();
    // 以Configuration实例创建SessionFactory实例
    SessionFactory  sf = conf.buildSessionFactory(serviceRegistry);*/
           //5.1版本获取SessionFactory实例代码
    StandardServiceRegistry serviceRegistry=new StandardServiceRegistryBuilder().configure().build();

    SessionFactory sf=new MetadataSources(serviceRegistry).buildMetadata().buildSessionFactory();

    //创建session
    Session session = sf.openSession();
    // 开始事务
    /\*
     \* 使用Hibernate进行操作时(增、删、改)必须显示的调用Transaction(默认:autoCommit=false)。
     *    Transaction的运行与Session接口相关,可调用Session的beginTransaction()方法生成一个Transanction实例。
     \* */
    Transaction tx = session.beginTransaction();

    // 创建出版社对象
    Publisher publisher = new Publisher();
    Publisher publisher2 = new Publisher();
    // 设置出版社相关信息
    publisher.setId(2);
    publisher.setPublisherName("高兴死了");
    publisher.setPublisherNo("12345");

    session.save(publisher);
    tx.commit();
    session.close();
    sf.close();

Hibernate 4.3 其中的一种 获取SessionFactory的方法

//实例化configuration Configuration con=new Configuration().configure(); //实例化ServiceRegistry ServiceRegistry service=new StandardServiceRegistryBuilder().applySettings(con.getProperties()).build(); //创建SessionFactory实例 SessionFactory fac=con.buildSessionFactory(service);

而Hibernate 5.1 的获取SessionFactory的方法

StandardServiceRegistry serviceRegistry=new StandardServiceRegistryBuilder().configure().build(); SessionFactory sessionFactory=new MetadataSources(serviceRegistry).buildMetadata().buildSessionFactory();

我就是用错了方法,才出现错误,改过来用5.1的方法就可以了