springboot + neo4j 问题总结

使用过程中遇到的问题记录

1、使用 $param 参数问题,如查询某些标签时不需要自动加双引号,如 match(n:label),而lable作为参数时,会自动加双引号变为 match(n:"label"), 这就会导致脚本出错,如代码中的参数 knowledgePointLabel 被加了双引号导致查询错误

java 复制代码
import org.springframework.data.neo4j.repository.Neo4jRepository;
import org.springframework.data.neo4j.repository.query.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

/**
 * 知识词条 持久层
 *
 * @author kou
 */
@Repository
public interface KnowledgeEntryRepository extends Neo4jRepository<KnowledgeEntry, Long> {

	/**
	 * 统计文献关联的知识词条下的知识点数量
	 * (文献)-[r:`知识词条`]->(知识点)
	 *
	 * @param literatureId        文献id
	 * @param knowledgePointLabel 知识点label
	 * @return 结果
	 */
	@Query("MATCH(n:`文献`) " +
			"where id(n) = $literatureId " +
			"with n " +
			"match (n)-[r:`知识词条`]-(k:`$knowledgePointLabel`) " +
			"return count(k) ")
	int countLiteratureKnowledgePoints(@Param("literatureId") Long literatureId, @Param("knowledgePointLabel") String knowledgePointLabel);

}

解决方法:

1、使用cypher 脚本执行,进行拼接

2、更新cypher 脚本

java 复制代码
@Query("MATCH(n:`文献`),(k) " +
			"where id(n) = $literatureId " +
			"and [x in labels(k) where x = $knowledgePointLabel] " +
			"with n,k " +
			"match (n)-[r:`知识词条`]-(k) " +
			"return count(k) ")
相关推荐
波波0072 小时前
ASP.NET MVC 中的返回类型全集详解
后端·asp.net·mvc
糟糕好吃7 小时前
我让 AI 操作网页之后,开始不想点按钮了
前端·javascript·后端
leonkay8 小时前
Golang语言闭包完全指南
开发语言·数据结构·后端·算法·架构·golang
颜酱8 小时前
BFS 与并查集实战总结:从基础框架到刷题落地
javascript·后端·算法
无限大69 小时前
数字生存02:如何在信息爆炸的时代保持清醒,不被算法控制
后端
无限大69 小时前
AI实战02:一个万能提示词模板,搞定90%的文案/设计/分析需求
前端·后端
青柠代码录10 小时前
【Linux】脚本:console.log 日志定期备份清理
后端
菜鸟‍10 小时前
【后端项目】苍穹外卖day01-开发环境搭建
java·开发语言·spring boot
陈随易10 小时前
站在普通开发者的角度,我觉得 RollCode 更像是“把 H5 交付这件事重新捋顺了”
前端·后端·程序员
陈随易11 小时前
RollCode:不只是在做页面,而是在缩短“从需求到上线”的整条链路
前端·后端