Java 从Neo4j cypher查询返回布尔值

Java 从Neo4j cypher查询返回布尔值,java,neo4j,cypher,spring-data-neo4j,Java,Neo4j,Cypher,Spring Data Neo4j,我想使用节点的名称(而不是ID)检查节点是否存在。Cypher查询如下所示: MATCH (c:Jaguar{name:"JLR 2.5Ltr"})-[:REPRESENTED_BY]->(v) RETURN c IS NOT NULL 但是,使用neo4j shell/web控制台,返回的结果是字符串类型。spring-data-neo4j中也出现同样的故障,错误为: Null return value from advice does not match primitive retu

我想使用节点的名称(而不是ID)检查节点是否存在。Cypher查询如下所示:

MATCH (c:Jaguar{name:"JLR 2.5Ltr"})-[:REPRESENTED_BY]->(v) RETURN c IS NOT NULL
但是,使用neo4j shell/web控制台,返回的结果是字符串类型。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)

如果有人遇到了解决此问题的方法,您应该使用CASE检查节点是否为null,并返回所需的值:

MATCH (c:Jaguar{name:"JLR 2.5Ltr"})-[:REPRESENTED_BY]->(v)
RETURN CASE WHEN c IS NULL THEN false ELSE true END as c

更多信息可在

上找到。Supamiu提供的答案无效。不幸的是,您需要通过返回计数表达式来解决此问题:

MATCH (c:Jaguar{name:"JLR 2.5Ltr"})-[:REPRESENTED_BY]->(v) 
RETURN count(c) > 0 as c

谢谢你的询问。我试过测试它,效果很好。当我为节点不存在的场景尝试相同的方法时,它返回
(无更改,无记录)
,而不是false