我正在使用JSF 2.1,並且在加載包含大量數據的列表時出現問題。 數據經由JPA,基本上看起來這是從一個數據庫中獲取: (只是相關的部分,省略getter和setter)在JPA中加載列表時出現Stackoverflow錯誤
public class HostController {
private List<Host> allHosts;
@Inject
private HostService hostService;
public void beforeRenderLoadList(final ComponentSystemEvent event) {
allHosts = hostService.findAll();
}
}
該代碼在XHTML頁上的metaevent preRenderView
使用。
它工作的數據量較小,但由於原始表包含大約6500個條目,因此會引發堆棧溢出錯誤。
有什麼辦法可以延遲加載此列表或解決錯誤?
Google使用分頁解決了它。你考慮過了嗎?世界上哪個人不需要過濾(通過搜索關鍵字)和/或分頁(這樣只有一個子集可以從數據庫中檢索到)就需要一次看到6500個條目?另外一個好處是,檢索和顯示只有10條記錄而不是6500的速度要快得多。順便說一句,這個問題與JSF無關,當使用另一個前端使用JPA時,你會遇到完全相同的問題碼。要獲得更好的答案,請發佈堆棧溢出錯誤和實際的JPA代碼。 – BalusC 2013-04-22 11:23:21
@BalusC查詢基本上是「SELECT h FROM hosts h」。我的數據表工作與分頁和懶加載 - 工作正常。 我在這裏討論的內容應該顯示在selectOneMenu中。有沒有辦法延遲加載一個? – 2013-04-22 11:34:52
包含堆棧 – James 2013-04-22 12:52:04