Предоставляет ли Stormpath SDK способ построения запросов для условия НЕ?

С StormpathSDK вы обычно строите такие запросы:

Groups.where(Groups.name().eqIgnoreCase("SIMPLE_ADMIN"))

примечание. Groups.name() – это фабрика типизированных выражений, например StringExpressionFactory.

Теперь для дат существует несколько методов выражения даты, например;

<date-expression>.matches(String value)
<date-expression>.gt(Date value)
<date-expression>.lt(Date value)
<date-expression>.gte(Date value)
<date-expression>.lte(Date value)
<date-expression>.equals(Date value)
<date-expression>.in(Date begin, Date end)
<date-expression>.in(Date begin, Duration duration)

А для строк существуют следующие методы выражения строк;

<string-expression>.eqIgnoreCase(String value)
<string-expression>.startsWithIgnoreCase(String value)
<string-expression>.endsWithIgnoreCase(String value)
<string-expression>.containsIgnoreCase(String value)

Поскольку эти выражения не возвращают тип, с которым можно работать, например, с помощью логического отрицателя, я нахожу довольно странным отсутствие метода сравнения для проверки условия НЕ, например

<expression>.notEquals(...)
<expression>.notMatches(...)
<expression>.notContains(...)
<expression>.notIn(...)

Есть ли какой-нибудь известный способ добиться того, что предположительно должны делать эти методы?... Может ли кто-нибудь указать мне правильное направление?

Спасибо!


person SourceVisor    schedule 17.11.2015    source источник


Ответы (1)


Если бы отрицание было возможно, оно, вероятно, было бы доступно в качестве модификатора в Typed ExpressionFactory, например:

<date-expression>.not().matches(String value)
<date-expression>.not().gt(Date value)
<date-expression>.not().lt(Date value)
<date-expression>.not().gte(Date value)
<date-expression>.not().lte(Date value)
<date-expression>.not().equals(Date value)
<date-expression>.not().in(Date begin, Date end)
<date-expression>.not().in(Date begin, Duration duration)

Однако эта функция отсутствует в Java SDK (или других SDK Stormpath), поскольку базовый REST API в настоящее время не поддерживает отрицание в критериях запроса.

person Les Hazlewood    schedule 17.11.2015
comment
Спасибо @Les_Hazlewood, есть ли вероятность, что вы, ребята, добавите какие-либо альтернативы Stormpath SDK, которые поддерживают отрицание запросов. Если я не слишком забывчив, я думаю, что API JPA CriteriaQuery имеет что-то подобное - person SourceVisor; 17.11.2015
comment
И зная, что вы являетесь техническим директором Stormpath, не могли бы вы также помочь взглянуть на мой вопрос здесь?... stackoverflow.com/questions/33605873/ - person SourceVisor; 17.11.2015
comment
@Tall'jeezzy не уверен, что мы можем что-то сделать для этого на уровне SDK - сам базовый REST API должен поддерживать отрицание, прежде чем наши SDK смогут его использовать. Однако мы отметили это как запрос функции для нашей команды API! - person Les Hazlewood; 17.11.2015
comment
@Tall'jeezzy Я посмотрю, сможет ли наша команда Java SDK помочь! - person Les Hazlewood; 17.11.2015