如何将SearchCriteria API用于with IN和NOT IN运算符?

如何将SearchCriteria API用于with IN和NOT IN运算符?,search,oim,Search,Oim,我想找出未被删除和禁用的用户。我知道我可以使用两个搜索条件,并通过创建一个以上的搜索条件将它们一起使用。但由于NOT_IN和IN运算符已给出,我想知道如何使用该功能?您可以使用OIM搜索条件,如下所示: UserManager usrMgr = oimClient.getService(UserManager.class); List<String> listOfStatus = new ArrayList<String>(); listOfSt

我想找出未被删除和禁用的用户。我知道我可以使用两个搜索条件,并通过创建一个以上的搜索条件将它们一起使用。但由于NOT_IN和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 usrMgr=oimClient.getService(UserManager.class);
List listOfStatus=new ArrayList();
添加(“禁用”);
添加(“删除”);
SearchCriteria statusSearchCriteria=新的SearchCriteria(UserManagerConstants.AttributeName.STATUS.getId(),listOfStatus,SearchCriteria.Operator.NOT_IN);
试一试{
List retList=usrMgr.search(statusSearchCriteria,null,null);
System.out.println(retList.toString());
}捕获(例外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 UserManager=Platform.getService(UserManager.class);
SearchCriteria1=新的搜索条件(UserManagerConstants.AttributeName.STATUS.getId(),UserManagerConstants.AttributeValue.USER_STATUS_DELETED.getId(),SearchCriteria.Operator.NOT_EQUAL);
SearchCriteria2=新的搜索条件(UserManagerConstants.AttributeName.STATUS.getId(),UserManagerConstants.AttributeValue.USER_STATUS_DISABLED.getId(),SearchCriteria.Operator.NOT_EQUAL);
SearchCriteria合并=新的SearchCriteria(criteria1、criteria2、SearchCriteria.Operator.AND);
HashMap configParams=新HashMap();
configParams.put(“ENDROW”,-1);
列表结果=userManager.search(组合、空、配置参数);

我认为这个答案是不正确的,因为UserManager搜索方法的文档说明“支持的SearchCriteria运算符为AND、OR、NOT、大于、大于、小于、小于、等于和不等于。对于其他比较,如包含,SearchCriteria运算符将等于要搜索的值将为“”,另一个答案似乎是正确的解决方案