[英]Hibernate: How can I create saved filters and then use them?
這就是問題:
我收到一個使用Spring,Hibernate和Wicket的項目的任務。
在特定的HTML頁面中,我必須有可能創建一個過濾器(設置過濾器的名稱及其參數)。 我必須以這種方式創建過濾器列表。 同時,我必須有可能編輯和刪除過濾器,當然,也可以使用該過濾器。
有任何想法嗎? 我怎么能這樣做?
我對Hibernate的體驗非常低,但我需要為項目提出一個想法。
我有類Table_Something,我已經將數據庫中的表與Hibernate關聯,我需要創建用戶在我的Web應用程序中為此表創建過濾器的可能性
所以,我將創建一個名為Table_Something_Filters的類,我將把我的數據庫中的表與Hibernate關聯起來。 所以當我在我的應用程序中為Table_Something創建一個新的過濾器時,我會在Table_Something_Filters中插入一個新行。
這是一個好主意嗎? 我的解決方案的任何改進?
另一個問題:我如何使用我的過濾器? 我查詢Table_Something_Filters來獲取過濾器參數的值然后是什么? 如何根據Table_Something_Filters中的值生成查找程序,或者如何查詢Table_Something?
歡迎任何想法或建議! :)
好吧,是的,您可以在* _FILTER表中保存用戶輸入的參數和值作為過濾器,然后在您的DAO中有一個這樣的方法:
public List<MyEntity> findByFilter(MyEntityFilter filter) {
//Use hibernate criteria api to build up your query depending on value in your filter
Criteria criteria = session.createCriteria(MyEntity.class)
if (filter.getName() != null) {
criteria.add( Restrictions.like("name", filter.getName())
}
... Go on testing and adding other parts of the query
return criteria.list();
MyEntityFilter類將是一個簡單的類,其中包含可能的搜索過濾器的每個參數的getter和setter。 您將使用存儲在數據庫中的值構建此Filter類。 如果過濾器不經常更改,您可以將它們緩存在應用程序中。 如果你只有幾個可過濾的參數,你可以將它們存儲在不同的列中,否則你寧願存儲這樣的字符串: name = John ; color = blue,red,yellow; parameter3 = value *然后解析字符串以填充你的過濾器對象。 小心你使用的分隔符字符,你應該從用戶輸入中刪除它們!
然后,您可以僅使用Filter類的填充字段動態構建搜索條件。
如果你使用帶有hibernate的spring看看他們的HibernateDaoSupport ,你也可以搜索通常用於這個復雜查詢構建的規范模式。
當然你不必使用標准api,你也可以建立一個HQL查詢字符串,但是標准api更適合這種東西(雖然並不總是更容易閱讀)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.