我正在尝试为所有用户应用某些业务规则,但Java中的“订阅管理员”除外。当我将滤镜设置如下时,
user.setQueryFilter(new QueryFilter(“ SubscriptionAdmin”,“ =”,“ false”));
我收到这样的错误
无法解析:查询表达式中不允许用户类型的属性“ SubscriptionAdmin”。
我该如何实现?任何帮助表示赞赏。
最佳答案
根据WS API documentation,不能在查询中使用User对象上的SubscriptionAdmin字段。您可以遍历用户并在条件下使用if
语句:
if (userQueryObject.get("SubscriptionAdmin").getAsBoolean() == false){
//your code here;
}
SubscriptionAdmin
字段必须包含在提取中。这是评估条件的代码片段: QueryRequest userRequest = new QueryRequest("User");
userRequest.setFetch(new Fetch("UserName", "Subscription", "DisplayName", "SubscriptionAdmin"));
userRequest.setQueryFilter(new QueryFilter("UserName", "=", "[email protected]"));
QueryResponse userQueryResponse = restApi.query(userRequest);
JsonArray userQueryResults = userQueryResponse.getResults();
JsonElement userQueryElement = userQueryResults.get(0);
JsonObject userQueryObject = userQueryElement.getAsJsonObject();
String userRef = userQueryObject.get("_ref").getAsString();
System.out.println(userRef);
if (userQueryObject.get("SubscriptionAdmin").getAsBoolean() == false){
System.out.println(userQueryObject.get("SubscriptionAdmin"));
}