Esempio n. 1
0
 /** 按属性条件列表创建Criterion数组,辅助函数. */
 protected Criterion[] buildCriterionByPropertyFilter(final List<PropertyFilter> filters) {
   List<Criterion> criterionList = new ArrayList<Criterion>();
   for (PropertyFilter filter : filters) {
     if (!filter.hasMultiProperties()) { // 只有一个属性需要比较的情况.
       Criterion criterion =
           buildCriterion(filter.getPropertyName(), filter.getMatchValue(), filter.getMatchType());
       criterionList.add(criterion);
     } else { // 包含多个属性需要比较的情况,进行or处理.
       Disjunction disjunction = Restrictions.disjunction();
       for (String param : filter.getPropertyNames()) {
         Criterion criterion =
             buildCriterion(param, filter.getMatchValue(), filter.getMatchType());
         disjunction.add(criterion);
       }
       criterionList.add(disjunction);
     }
   }
   return criterionList.toArray(new Criterion[criterionList.size()]);
 }