關於Hibernate出現找不到實體類(Exception in thread "main" org.hibernate.MappingException: Unknown entity)
阿新 • • 發佈:2019-02-19
之所以寫這篇博文是因為在寫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);
StandardServiceRegistry serviceRegistry=new StandardServiceRegistryBuilder().configure().build(); SessionFactory sessionFactory=new MetadataSources(serviceRegistry).buildMetadata().buildSessionFactory();
當時,我就是在Hibernate5.1的版本下用了Hibernate4.3的獲取SessionFactory的方法,出現瞭如下的錯:轉載請標明出處。
---卓先紳