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 分钟前
第六篇 HttpServletRequest对象
java·spring boot·后端
忆~遂愿2 分钟前
vLLM Ascend 项目架构解析与部署配置指南
人工智能·后端·python·ai
Lio n J2 分钟前
基于SpringBoot常用脱敏方案
spring boot·spring·mvc·状态模式
Q_Q19632884754 分钟前
python+django/flask+vue基于机器学习的就业岗位推荐系统
spring boot·python·django·flask·node.js
没有腰的嘟嘟嘟9 分钟前
从 0 到 1:我如何用 Spring Boot 3 + Redis 打造一个生产级通用幂等与防重中间件(含图解 + 代码 + 案例)
spring boot·redis·中间件·lua
Q_Q51100828510 分钟前
python+django/flask+vue基于深度学习的图书推荐系统
spring boot·python·django·flask·node.js·php
闲人编程15 分钟前
Flask扩展开发:从零编写自己的Flask扩展
后端·python·flask·sqlalchemy·config·login·codecapsule
codealy22 分钟前
Spring 事务失效的八大场景深度解析
java·spring boot·后端·spring
serve the people25 分钟前
零基础吃透 RaggedTensor 文本特征提取示例(通俗版)
neo4j
canonical_entropy26 分钟前
对于《目前程序语言与软件工程研究中真正严重的缺陷是什么?》一文的解读
后端·架构·领域驱动设计