1
我想找出未被刪除且未被禁用的用戶。我知道我可以使用兩個搜索條件,並通過創建一個搜索條件將它們一起使用。但是,隨着NOT_IN和IN運算符的提供,我想知道如何使用該功能?如何將SearchCriteria API用於IN和NOT IN運算符?
我想找出未被刪除且未被禁用的用戶。我知道我可以使用兩個搜索條件,並通過創建一個搜索條件將它們一起使用。但是,隨着NOT_IN和IN運算符的提供,我想知道如何使用該功能?如何將SearchCriteria API用於IN和NOT IN運算符?
可以使用OIM搜索條件如下:
UserManager usrMgr = oimClient.getService(UserManager.class);
List<String> listOfStatus = new ArrayList<String>();
listOfStatus.add("Disabled");
listOfStatus.add("Deleted");
SearchCriteria statusSearchCriteria = new SearchCriteria(UserManagerConstants.AttributeName.STATUS.getId(), listOfStatus, SearchCriteria.Operator.NOT_IN);
try {
List<User> retList = usrMgr.search(statusSearchCriteria, null, null);
System.out.println(retList.toString());
} catch (Exception e) {
e.printStackTrace();
}
另一種方式做,這是做兩個不同的搜索條件,然後在一個將它們組合起來。
UserManager userManager = Platform.getService(UserManager.class);
SearchCriteria criteria1 = new SearchCriteria(UserManagerConstants.AttributeName.STATUS.getId(), UserManagerConstants.AttributeValues.USER_STATUS_DELETED.getId(), SearchCriteria.Operator.NOT_EQUAL);
SearchCriteria criteria2 = new SearchCriteria(UserManagerConstants.AttributeName.STATUS.getId(), UserManagerConstants.AttributeValues.USER_STATUS_DISABLED.getId(), SearchCriteria.Operator.NOT_EQUAL);
SearchCriteria combined = new SearchCriteria(criteria1, criteria2, SearchCriteria.Operator.AND);
HashMap<String,Object> configParams = new HashMap<String,Object>();
configParams.put("ENDROW", -1);
List<User> results = userManager.search(combined, null, configParams);
我相信這個答案是不正確,爲的UserManager的搜索方法的文檔指出「支持的SearchCriteria符爲AND,OR,NOT,GREATER_THAN,greater_equal,這些LESS_THAN,LESS_EQUAL,平等,NOT_EQUAL。有關更多比較像包含SearchCriteria運算符將EQUAL與要搜索的值將是'* *'「其他答案似乎是正確的解決方案 –