Убедитесь, что метод в перечислении существует с jQAssistant

Я хочу убедиться, что все перечисления имеют статический метод с именем findByAttribute,

Я могу выбрать метод по

MATCH (enum:Enum) - [:DECLARES] -> (method:Method)
 WHERE method.static = true
 AND method.name = "findByAttribute"
RETURN enum.name, method.name

Теперь я хочу изменить условие выбора метода. Я старался NOT EXITS но это не сработало.

2 ответа

Решение

Во-первых, вот все операторы, которые вы можете использовать, и как их использовать

Самый простой способ - использовать пузыри для группировки вашей логики. (Это, вероятно, легче всего понять, прочитав один текст)

MATCH (enum:Enum) - [:DECLARES] -> (method:Method)
 WHERE NOT (method.static = true
 AND method.name = "findByAttribute")
RETURN enum.name, method.name

Следующая лучшая вещь NOT (A and B)знак равноNOT A OR NOT B

MATCH (enum:Enum) - [:DECLARES] -> (method:Method)
 WHERE NOT method.static = true
 OR NOT method.name = "findByAttribute"
RETURN enum.name, method.name

или используя оператор неравенства <> вместо инвертирования логического

MATCH (enum:Enum) - [:DECLARES] -> (method:Method)
 WHERE method.static <> true
 OR method.name <> "findByAttribute"
RETURN enum.name, method.name

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


Предполагая обратное, вы имели в виду "ГДЕ этот метод не существует", вы НЕ МОЖЕТЕ совпадать с шаблоном (вырежьте method.name из return, так как нет логического способа включить его в эту версию запроса)

MATCH (enum:Enum) 
 WHERE NOT (enum)-- [:DECLARES] -> (method:Method {static:true, name:"findByAttribute"})
RETURN enum.name

Взять последний запрос предыдущего ответа и немного его исправить:

MATCH (enum:Enum:Type) WHERE NOT (enum)-[:DECLARES]->(:Method {static:true, name:"findByAttribute"}) RETURN enum.fqn

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