hql語句中使用in查詢

  今天做項目時使用in條件過濾時不能查詢出數據,後來上網查詢後,才明白設置到in 中的數據類型必須是數組格式的。例如 query.setParameterList(string, (Object[])obj);
而且參數方法必須使用setParameterList方法,不能使用query.setParameter的方法。

  我們做的是web-service項目前段傳遞數組不方便可以用集合傳遞,再在後臺將集合轉換爲數組。


  使用的時候可以參考一下的兩個例子

 一

  1. String hql = "FROM Login login WHERE login.id in(:ids)";  

  2. Map<String,Object> map = new HashMap<String,Object>();  

  3. Integer[] ids = new Integer[]{1,2,3};  

  4. map.put("ids",ids);  

  5. List<Login> lstLogin = (List<Login>)xxxDao.findByHql(hql,map,0,0);


 二

  1. private Query setParameter(Query query, Map<String, Object> map) {  

  2.         if (map != null) {  

  3.             Set<String> keySet = map.keySet();  

  4.             for (String string : keySet) {  

  5.                 Object obj = map.get(string);  

  6.                 //這裏考慮傳入的參數是什麼類型,不同類型使用的方法不同  

  7.                 if(obj instanceof Collection<?>){  

  8.                     query.setParameterList(string, (Collection<?>)obj);  

  9.                 }else if(obj instanceof Object[]){  

  10.                     query.setParameterList(string, (Object[])obj);  

  11.                 }else{  

  12.                     query.setParameter(string, obj);  

  13.                 }  

  14.             }  

  15.         }  

  16.         return query;  

  17.     }


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章