我们将 neo4j 1.8.2 Advanced 与 Spring Data neo4j 2.2.0.RELEASE 和 Spring Framework 3.2.0.RELEASE 一起使用。我们使用了很多自定义查询。查询是使用我们存储库接口中的 @Query 注释定义的。
在编写测试时,我们遇到了一个查询问题。据我们所知,当查询使用不存在的起始节点时,neo4j 会抛出 a NotFoundException
,然后将其转换为 a DataRetrievalFailureException
。
但是对于我们的查询,异常被转换为InvalidDataAccessResourceUsageException
通常表示查询不正确的代替。我们认为我们的查询看起来不错,所以我们不明白为什么InvalidDataAccessResourceUsageException
会被抛出。当我们使用现有的开始节点对其进行测试时,查询会返回预期的结果。
查询:
START person = node({0})
MATCH person -[attributeRel:ATTRIBUTE]-> attribute -[:ATTRIBUTE_CATEGORY]-> category
WHERE attributeRel.value! <> 'N' AND attributeRel.value! <> 'Unbekannt/nicht bewertet'
RETURN category, COLLECT(attribute), COLLECT(attributeRel)
ORDER BY category.name"
这是 Spring Data neo4j 中的错误,还是我们的查询错误或异常类型正确,我们只是不明白为什么会抛出它。