Neo4jRepository是继承了Spring data的CrudRepository的,所以是在CrudRepository的基础上针对Neo4j做了扩展的。
初步使用的实验是,你能想到的CRUD的方法,基本不用你自己写Cypher(也就是Neo4j的SQL)。
比如要模糊查询:
MATCH (a:Artifact) WHERE a.artifactId CONTAINS 'red' return a
那么,对应地你只要在你自己定义的Repository中继承Neo4jRepository,就可以像堆积木一样写出你的get请求对应的方法名“findAllByArtifactIdContains”,那么这个方法名就对应了上面的查询语句,且不用我们自己显式用@Query在接口方法上写出查询语句
//@Query("MATCH (a:Artifact) WHERE a.artifactId CONTAINS $artifactId RETURN a")
List<Artifact> getAllByArtifactIdContains(String artifactId);
findAll在Neo4jRepository里面有多种重载
如果你在一个图数据库里面使用不带参数的findAll()
方法,那么就会报下面的错误。大概就是因为你Node之间是彼此关联的,findAll()
方法执行的Cypher如下:
MATCH (n:`Organization`) WITH n RETURN n,[ [ (n)<-[r_h1:`<