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 小时前
【Linux】《Linux常用命令汇总表》
linux·运维·服务器·前端·windows·后端·macos
s1mple“”3 小时前
大厂Java面试实录:从Spring Boot到AI技术的电商场景深度解析
spring boot·redis·微服务·kafka·向量数据库·java面试·ai技术
yhole4 小时前
springboot三层架构详细讲解
spring boot·后端·架构
香香甜甜的辣椒炒肉4 小时前
Spring(1)基本概念+开发的基本步骤
java·后端·spring
天天进步20154 小时前
探究 Graphiti 在 Neo4j 之上的语义搜索与图遍历优化
人工智能·neo4j
白毛大侠5 小时前
Go Goroutine 与用户态是进程级
开发语言·后端·golang
golang学习记5 小时前
IDEA 2026.1全新调试新特性:Spring Boot调试不再靠猜!
java·spring boot·intellij-idea
ForteScarlet5 小时前
从 Kotlin 编译器 API 的变化开始: 2.3.20
android·开发语言·后端·ios·开源·kotlin
橘子编程5 小时前
OpenClaw(小龙虾)完整知识汇总
java·前端·spring boot·spring·spring cloud·html5
大阿明5 小时前
SpringBoot - Cookie & Session 用户登录及登录状态保持功能实现
java·spring boot·后端