当前位置:   article > 正文

neo4j java@query注解属性替换问题_neo4j @query

neo4j @query

我在做springboot整合neo4j时,遇到不少坑,让我耗时最长,也是最无语的一个坑就是注解属性替换问题,做个笔记记录一下

首先neo4j整合成功,然后可以通过自带的新增,删除,查询方法,做一些简单的操作,但当你想做一个自定义查询的时候就得在Dao层编写方法,就在这里

  1. import org.springframework.data.neo4j.annotation.Query;
  2. import org.springframework.data.neo4j.repository.Neo4jRepository;
  3. import org.springframework.data.repository.query.Param;
  4. import org.springframework.stereotype.Repository;
  5. import org.springframework.transaction.annotation.Transactional;
  6. import java.util.List;
  7. @Repository
  8. public interface DimingDao extends Neo4jRepository<Diming,Long> {
  9. List<Diming> queryshort(String name1, String name2);
  10. }

方法是写好了,但谁来实现成了问题,这时候就要用到@Query注解。我网上查了很多,发现不少人是这么写的

 通过{}来替换字符串中的值,很多人都这么写的,而我就不行,总给我报错,说语法不对。于是我问了一个好心的大佬,告诉我说不要用{},而是用' '单引号,我信了,果然没报错。但他给neo4j传的值就是name,不是name的值,我无语了。。。。

于是乎,我又找到一个博主,终于解答了我的疑惑,我们可以用$符来替换值,就比如上面那个例子,不用{},也不用' ',而是直接用$name就ok了

  1. @Repository
  2. public interface DimingDao extends Neo4jRepository<Diming,Long> {
  3. @Query(value = "match (a:diming{name:$name1}),(b:diming{name:$name2}) ,p=shortestpath((a)-[*..10]->(b)) return p")
  4. List<Diming> queryshort(@Param(value="name1") String name1,@Param(value="name2") String name2);
  5. }

还得注意添加@Param注解

但是我又遇到一个问题,如果我传的是对象怎么办?

刚开始我是这么写的,他给我报语法错误

  1. @Repository
  2. public interface DimingDao extends Neo4jRepository<Diming,Long> {
  3. @Transactional
  4. @Query(value = "match (a:diming{id:$diming.getId}) set a.name=$diming.getName")
  5. void update(@Param(value = "diming") Diming diming);
  6. }

最后还是没能解决,不想找了,妥协了。。。。

于是我就给他单独传了id和name

  1. @Repository
  2. public interface DimingDao extends Neo4jRepository<Diming,Long> {
  3. @Transactional
  4. @Query(value = "match (a:diming{id:$id}) set a.name=$name")
  5. void update(@Param(value = "id") Long id,@Param("name") String name);
  6. }

这个问题虽然解决了,但发现又冒出一个问题,neo4j既然不能通过id查询。。。。新发现哈。。。

这里青岛这个节点的id为9,

 我试着根据id查找节点,既然找不到

 有谁知道原因的评论区解答下呗,实在不行这个我也妥协,单独设置id属性

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/727735
推荐阅读
相关标签
  

闽ICP备14008679号