2011-10-07 67 views
0

我已經用一些表格製作了一個Web應用程序。現在,我想在這些表格中進行搜索。目前,我已經成功地創建了一個封裝每個表的查詢的類,例如getAllPersonsByFirstName ...等等。然後,用戶可以從複選框中選擇他/她想要包含在搜索中的表格。如果選擇了多個表,我將字符串(從輸入字段獲得)發送到每個方法,然後將結果合併到Set集合中。如何搜索多個表中的單詞

但是,正如我所看到的,這有一些有限的用途,因爲如果我想分頁結果(每頁5,10,100),我將無法知道我應該限制搜索的行數。我正在使用JPA,所以我知道我可以設置偏移量和最大值,但是當有多個表時,我看不到這會如何工作。

所以我想到的是做一個大的最終查詢發送到數據庫,使用較小的方法,但我不知道這是否是要走的路。 JPA中的偏移量最大值至少可以工作。

也許有更好的方法來做到這一點,我會apprci幫助如何實現分頁支持。 (使用JPA,EJB,JSF和綁定結果到數據表)

+0

您正在使用哪種JPA框架?休眠?的EclipseLink? –

+0

@MarkRobinson:Eclipselink – LuckyLuke

回答

0

這裏是一些提示http://forums.mysql.com/read.php?107,36833,36833如果數據庫是mysql。

你可以使用獅身人面像,如果你的數據

+0

在執行此操作時是否可以將搜索限制到特定的表格? – LuckyLuke

+0

如果你檢查有關mysql的鏈接,那麼是的。在sphinx中使用 您可以創建具有不同數據源的多個索引 – Guntis

0

的巨量由於您使用的EclipseLink,我建議你看看他們的Expression framework

它允許您以非常理智的方式執行程序化查詢。

ExpressionBuilder emp = new ExpressionBuilder(); 
Expression exp = emp.get("address").get("street").equal("Meadowlands"); 
Vector employees = session.readAllObjects(Employee.class, 
       exp.and(emp.get("salary").greaterThan(10000))); 

您可以將多個表達式組合成一個更大的表達式來一次查詢多個表。您也可以在查詢表達式執行時指定分頁和查詢限制。