我想确保所有枚举都有一个名为findByAttribute
的静态方法。
我可以通过
选择方法MATCH (enum:Enum) - [:DECLARES] -> (method:Method)
WHERE method.static = true
AND method.name = "findByAttribute"
RETURN enum.name, method.name
现在我想逆转方法选择的条件。我尝试了NOT EXITS
,但是没有用。
答案 0 :(得分:0)
首先,这里是您可以使用的所有operators,以及使用方法
最简单的方法是使用气泡对逻辑进行分组。 (这可能是通读最容易理解的内容)
new BaseOuter
BaseOuter Constructor
BaseOuter Initialize BaseInner
BaseInner Constructor
new DerivedOuter
BaseOuter Constructor
DerivedOuter Initialize DerivedInner
BaseInner Constructor
DerivedInner Constructor
DerivedOuter Constructor (finished)
下一个最好的事情是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
而不是反转布尔值
<>
EXISTS仅用于检查是否设置了属性,因此在这里并不适用,因为可以设置它。
假设您的意思是“此方法不存在的地方”,那么您就不能进行模式匹配(从方法中删除method.name,因为在此版本的查询中没有逻辑方法可以包含它)
MATCH (enum:Enum) - [:DECLARES] -> (method:Method)
WHERE method.static <> true
OR method.name <> "findByAttribute"
RETURN enum.name, method.name
答案 1 :(得分:0)
提取上一个答案的最后一个查询并进行一些更正:
MATCH
(enum:Enum:Type)
WHERE NOT
(enum)-[:DECLARES]->(:Method {static:true, name:"findByAttribute"})
RETURN
enum.fqn