2016-05-06 11 views
1

Ich möchte Sql-Abfrage auf Hibernate Kriterien umschreiben und ich habe dieses Problem. Es ist original:Einschränkungen ODER im Ruhezustand (Java)

if (null != filterGroupIds && !filterGroupIds.isEmpty()) { 

       hqueryText += (requereAnd ? " and " : "") + "("; 
       requereAnd = true; 
       if (filterGroupIds.contains("null")) { 
        hqueryText += " w.crmUser.groupId = null "; 

        filterGroupIds.remove("null"); 
        hqueryText += filterGroupIds.isEmpty() ? "" : "or"; 
       } 
       if (!filterGroupIds.isEmpty()) 
        hqueryText += " w.crmUser.groupId in (" + StringUtils.join(filterGroupIds.iterator(), ",") + ")"; 

       hqueryText += ")"; 
      } 

Es ist meine Kriterien:

if (null != filterGroupIds && !filterGroupIds.isEmpty()) { 

       if (filterGroupIds.contains(Integer.valueOf(-1))) { 
        criteria.add(Restrictions.eq("crmUser.groupId", null)); 
        filterGroupIds.remove(Integer.valueOf(-1)); 
        if (!filterGroupIds.isEmpty()) { 
         criteria.add(Restrictions.or(Restrictions.in("crmUser.groupId", filterGroupIds))); 
        } 
       }else { 
        criteria.add(Restrictions.in("crmUser.groupId", filterGroupIds)); 
       } 
      } 

aber meine OR Einschränkungen funktionieren nicht.

Antwort

0

Sie sollten für criteria.add(Restrictions.or(Restrictions.in("crmUser.groupId", filterGroupIds)));

als Restrictions.or() nimmt zwei Kriterium values.Recheck Code und geben zwei Kriterium Objekt der Kompilierung Fehler werden immer verglichen werden.