2016-06-08 53 views
0

我想重新創建this old NetBeans hibernate-webapp tutorial。所有的項目都使用JSF託管的bean從MySQL數據庫中檢索數據。休眠4.3,與JavaServer Faces使用Netbeans,返回零行表

我有以下問題,我以爲是因爲我使用的是較新的軟件版本,但我想知道需要什麼樣的調整,該項目使用較新版本的工作:

我能夠顯示檢索到的數據的最初10行,這是在NetBeans中執行'run'時在瀏覽器中顯示的數據。然而,當我點擊呈現網頁中的鏈接來顯示下面的10個結果時,我收到一個空表(沒有錯誤消息,列標題存在,但沒有數據行,只有一行空細胞呈現)。

我已經改變了教程使用StandardServiceRegistryBuilder,如解釋here。另外,我在FilmController.java中使用@Named(value =「filmController」)而不是@MessageBean。

  • 我的設置是
  • 休眠4.3
  • 的NetBeans 8.1
  • Glassfish的4.1.1
  • MySQL的連接器的Java-39年5月1日 - bin.jar
  • JSF 2.2
  • JDK 1.8.0_92

我曾嘗試使用WildFly而不是GlassFish,但我得到完全相同的問題。

第1頁呈現正確的事實表明沒有語法錯誤。

問題似乎是我如何嘗試從瀏覽器中檢索數據。在FilmHelper.java了我在檢索以下方式的數據很多方法:

List<Actor> actorList = null; 
try { 
    org.hibernate.Transaction tx = session.beginTransaction(); 
    Query q = session.createQuery (...some tested query); 
    actorList = (List<Actor>) q.list(); 

} catch (Exception e) { 
    e.printStackTrace(); 
} 

(但正如我所說,這些方法很好地工作在項目第一初始化。)

總結:祝要知道爲什麼數據在網頁第一次初始化時正確地從MySQL加載,但是當隨後單擊超鏈接時不從數據庫檢索和/或顯示更多數據。

+0

只需運行一個調試器。或者如果你不能,只需在關鍵位置添加一堆'System.out.println()'行,打印感興趣的變量。無論哪種方式,最後只是在分析實際代碼流和實際變量值的同時,利用人力邏輯思維能力。 – BalusC

回答

0

因此,對於任何其他完整的新手: 我通過在每個方法中添加一行和一個「提交」來對每個輔助方法進行修改。例如,代碼段以上變爲:

List<Actor> actorList = null; 
try { 
    this.session = HibernateUtil.getSessionFactory().getCurrentSession(); 
    org.hibernate.Transaction tx = session.beginTransaction(); 
    Query q = session.createQuery (...some tested query); 
    actorList = (List<Actor>) q.list(); 
    tx.commit(); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

這是一個修復,如果不是修復程序。