2011-07-27 61 views
1

我有一個關於如何使用GWT中的RequestFactory進行數據過濾的問題。我目前正在研究一個由MySQL數據庫支持的應用程序。我的持久層基於JPA/Hibernate。我正在使用RequestFactory來查詢我的數據庫中所有與列表相關的操作。如何過濾GWT requestFactory結果?

因此,例如,我有一個Person對象:在我的PersonRequestContext中,我有一個允許列出人員的方法。該方法的簽名是:

Request<List<PersonProxy>> listPersons(Integer firstResult, Integer maxResults); 

正如你可能已經猜到了,相應的查詢是這樣的:

entityManager.createQuery("SELECT p FROM Person p ORDER BY p.id").setFirstResult(firstResult).setMaxResults(maxResults).getResultList(); 

現在,我想篩選基於表列結果。所以我想用某種Filter類抽象來解決它。問題是我們都知道,不可能將非原始對象傳遞給requestFactory方法。

你有沒有經歷過這種事情?你是如何處理它來解決問題的?

回答

1

您聲明只有原始類型可以傳遞給Request方法是不正確的。請參閱transportable types上的文檔。您可以創建ValueProxy層次結構來爲過濾器建模。

+0

哦,我明白了,我完全錯了。非常感謝你糾正我。我會嘗試用你的建議來解決它... 再次非常感謝, – kaffein

+0

好的,所以這裏是我試圖做的事情:我在服務器端創建了一個對象(比方說A)和AProxy在客戶端擴展ValueProxy。我只想**在服務器端發送一個值對**(它看起來很簡單,我可能很愚蠢)。 只是有一個AProxy填充其領域,並將其發送到服務器... 如何在客戶端創建一個AProxy對象?我怎麼能用@service註解RequestContext,因爲它沒有任何與服務相關的功能(我的意思是沒有db查詢或stg就像那樣實現)? 非常感謝 – kaffein