1. 程式人生 > >關於Hibernate出現找不到實體類(Exception in thread "main" org.hibernate.MappingException: Unknown entity)

關於Hibernate出現找不到實體類(Exception in thread "main" org.hibernate.MappingException: Unknown entity)

之所以寫這篇博文是因為在寫struts2+hibernate整合的時候遇到找不到實體類這個問題,用了網上很多大神說的那些解決辦法但是總是沒法解決,困擾了我差不多一天。然後今天終於解決了。(註解方法寫的實體類)

首先我們要了解 持久化類的載入流程     載入hibernate的配置檔案-------SessionFactory呼叫buildSessionFactory方法完成建表的工作(而持久化類是在建表的時候被用到)

因此可以從兩個方法來解決問題:

1.是否能成功載入hibernate的配置檔案

  1.1  可能持久化類的映射出錯(例如 class=包名+類名  但是有些版本不是這樣的,而是類名和包名分別放在class和package屬性裡)

  1.2  可能持久化類的包導錯(匯入的是javax.persistence.Entity)

2.是否能成功獲取SessionFactory,並呼叫buildSessionFactory方法完成建表工作

   2.1  不同版本的獲取SessionFactory的方法不一樣。            例如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();

              當時,我就是在Hibernate5.1的版本下用了Hibernate4.3的獲取SessionFactory的方法,出現瞭如下的錯: 


            轉載請標明出處。                                             

                                                                                                                                                                                                                                                                                              ---卓先紳