Убедитесь, что метод в перечислении существует с jQAssistant - PullRequest
0 голосов
/ 04 декабря 2018

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

. Я могу выбрать метод с помощью

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

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

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

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

MATCH
  (enum:Enum:Type) 
WHERE NOT
  (enum)-[:DECLARES]->(:Method {static:true, name:"findByAttribute"})
RETURN
  enum.fqn
0 голосов
/ 04 декабря 2018

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

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

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

СУЩЕСТВУЕТ просто проверять, установлено ли свойство, поэтому на самом деле не применяется здесь, потому что его можно установить.


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

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