我想检查节点是否存在使用其名称(而不是其ID)。 Cypher查询看起来像:
MATCH (c:Jaguar{name:"JLR 2.5Ltr"})-[:REPRESENTED_BY]->(v) RETURN c IS NOT NULL
但是,使用neo4j shell / web控制台,返回的结果是String类型。 spring-data-neo4j中的错误同样失败:
Null return value from advice does not match primitive return type for: public abstract boolean xxx.yyy.repository.SomeRepository.checkIfDatasetExists(java.lang.String)
有人为此遇到任何解决方法
答案 0 :(得分:5)
Supamiu提供的答案不会令人遗憾,您需要通过返回计数表达式来解决这个问题:
MATCH (c:Jaguar{name:"JLR 2.5Ltr"})-[:REPRESENTED_BY]->(v)
RETURN count(c) > 0 as c
答案 1 :(得分:1)
您应该使用CASE检查您的节点是否为空,并返回您需要的值:
MATCH (c:Jaguar{name:"JLR 2.5Ltr"})-[:REPRESENTED_BY]->(v)
RETURN CASE WHEN c IS NULL THEN false ELSE true END as c
上找到更多信息