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) ")
相关推荐
大鸡腿同学1 小时前
AI 知识库搜索不准?问题出在分块
后端
夕颜1111 小时前
Multica 使用心得介绍
后端
星轨zb2 小时前
LangChain4j 集成 Spring Boot:会话记忆 NPE 的根源与 ChatMemoryProvider 正确配置
java·spring boot·后端·langchain4j
混凝土拌意大利面2 小时前
TG-BOOT springboot 功能集散开发框架(AI 协作友好)
人工智能·spring boot·后端
小村儿4 小时前
连载12- Cluade code 的MCP 到底还用不用
前端·后端·ai编程
IT_陈寒4 小时前
Vite静态资源引用差点把我逼疯,原来要这样处理
前端·人工智能·后端
北城以北88884 小时前
Quartz定时任务
java·spring boot·intellij-idea
子兮曰4 小时前
WSL 配 GPU 用 Docker 的折腾指南(2026 年版)
linux·前端·后端
Nturmoils4 小时前
从 mysql 命令切到 ksql,第一步先把连接搞明白
后端
鹏多多4 小时前
锐评CSDN最近上线的AI数字营销:烂完之前最后再捞一笔
前端·后端·程序员