毕设20200528 Neo4jRepository的使用,findAll方法的注意点

本文介绍了Neo4jRepository在Spring Data中的使用,特别是在使用findAll方法时需要注意的点,防止出现由于节点关联导致的StackOverflowError。通过示例展示了未加控制的findAll方法会引发无限递归,导致内存溢出。解决方案是通过限制查询深度避免此类问题。
摘要由CSDN通过智能技术生成

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:`<
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值