我一直在努力實現使用Hibernate標準進行搜索的功能。要求有點模糊。用戶可以在搜索字段中輸入任何文本/單詞,搜索必須通過多個表格進行,這些表格之間沒有任何關聯。休眠標準 - 從兩個表中獲取沒有任何關聯的結果
以下是兩個實體類。
Table A (EntityClassA.java)
Table B (EntityClassB.java)
如果用戶輸入應這兩個表中進行搜索,而應返回獲取列表(一個或多個)匹配輸入的字符(S)「anycharecter」。 此外我想將表A的結果存儲到列表,並將結果從表B到列表。
我不知道這是如何實現使用休眠條件。
我只能設法寫一個表。
public List<EntityClassAVo> search((string keywords){
List<EntityClassAVo> outputList = new ArrayList<EntityClassVo>();
Criteria criteria = etSessionFactory().getCurrentSession().createCriteria(EntityClassA.class);
//applying restriction - as I need to search entered string in all columns.
criteria.add(Restrictions.ilike("id", keywords, MatchMode.ANYWHERE));
criteria.add(Restrictions.ilike("name", keywords, MatchMode.ANYWHERE));
criteria.add(Restrictions.ilike("age", keywords, MatchMode.ANYWHERE));
outputList = criteria.list();
return outputList;
}
問題
1)如果可能的話,如何寫EntityClassB.java標準在同一個 「搜索」 的方法? 2)如果問題1是可能的,如何將從EntityClassA獲取的結果存儲在一個對象中,並將EntityClassB存儲在另一個對象中? 3)如果上述不簡單,我可能會要求改變設計(只有當,如果我有很強的理由)。 - 我想在(表A)和(表B)之間放置一箇中間表(表X)。
[編輯] 4)有一種情況,用戶想要從1個表中的任何一個或兩個都搜索結果。我們將如何檢查這種情況?
請幫我解開這個東西。
感謝您的代碼,但我沒能獲得地圖的一部分。你能否稍微解釋一下,這裏Map的簽名是什麼? – Namita 2013-05-05 18:33:00
Map的簽名可以是'Map,列表<?如果你有一個基本的類EntityClassA和EntityClassB或者只是'Map ,List >>',則擴展Entity >>。獲取數據:'EntityClassA a =(EntityClassA)search(「ololoolo」)。get(EntityClassA.class).get(0);' –
Patison
2013-05-05 18:56:57
好吧,那麼?運營商意味着「任何職業」。可以使用extends關鍵字來限定「擴展/實現實體類的任何類? – Namita 2013-05-05 19:13:59