Как создать picklink тождественный запрос с условиями "НЕ"?

Я хочу запросить мою личность и показать ее в таблице с параметрами сортировки, разбивки на страницы и фильтрации. Это все хорошо, но я не нашел способ ввести условия НЕ.

В коде переменная T - это org.picketlink.idm.model.IdentityType, а identityClass - это реальный класс.

IdentityQueryBuilder queryBuilder = getIdentityManager().getQueryBuilder();

IdentityQuery<T> query = queryBuilder.createIdentityQuery(identityClass);
List<Condition> condizioni = new ArrayList<>();
conditions.addAll(conditionFromFilterClausole(queryBuilder, ffc));
Condition c[] = condizioni.toArray(new Condition[condizioni.size()]);
query.where( c);
...

в методе conditionFromFilterClausole я перевожу некоторый объект (FilterClause), где условия для запроса идентичности. FilterClause.field - это имя столбца, FilterClause.operator - это тип условия, а FilterClause.value - это значение для использования.

for(FilterClause f : lf){
    QueryParameter qp = new org.picketlink.idm.query.AttributeParameter(f.getField());
        switch(f.operator){
            case EQUAL:
                conditions.add(qb.equal(qp, f.value));
                break;
            case CONTAINS :
                conditions.add(qb.like(qp, (String) f.value));
                break;
            case ENDSWITH : 
                ???
            case STARTSWITH : 
                ???
                break;
            case GREATEREQUAL : 
                conditions.add( qb.greaterThanOrEqualTo(qp, (String) f.value));
                break;
            case GREATERTHEN : 
                conditions.add(qb.greaterThan(qp, (String) f.value));
                break;
            case LESSEQUAL: 
                conditions.add( qb.lessThanOrEqualTo(qp, (String) f.value));
                break;
            case LESSTHEN: 
                conditions.add(qb.lessThan(qp, (String) f.value));
                break;
            case IN: 
                conditions.add(qb.in(qp, f.value));
                break;
            case NOTIN: 
            case NOTCONTAINS:
            case NOTEQUAL:
                ???
                break;
        }

Я скучаю по способу создания условий для "STARTSWITH/ENDSWITH" и всех других условий с NOT, например, классические не равны (все в случае с???). QueryBuilder не имеет этих методов.

0 ответов

Другие вопросы по тегам