我在 Java中使用Neo4J中的cypher参数时遇到问题.我运行嵌入的数据库.

代码应该是这样的(GraphDB.cypher直接转到ExecutionEngine)

HashMap<String,Object> parameter = new HashMap<>();
parameter.put("theLabel1","Group");
parameter.put("theRelation","isMemberOf");
parameter.put("theLabel2","Person");
GraphDB.cypher("MATCH (n1:{theLabel1})-[r:{theRelation}]->(n2:{theLabel2}) RETURN n1,r,n2",parameter);

但它以此例外结束

Exception in thread "main" Invalid input '{': expected whitespace or a label name (line 1,column 11)
"MATCH (n1:{theLabel1})-[r:{theRelation}]->(n2:{theLabel2}) RETURN n1,n2"

文档(和教程)告诉使用{}来覆盖参数,但这也用作属性的密码json表示法.
@See http://docs.neo4j.org/chunked/milestone/tutorials-cypher-parameters-java.html

是否有另一种方法来解决此问题,而不是像这样(或使用其他模板方法)构建查询字符串

GraphDB.cypher("MATCH (n:" + labelName + ")-[r:" + relationName + "]->...

这是必需的,因为目标标签可以更改,我想完全重用代码.

提前致谢.

[[取得(叹气)没有作为答复后的行为]]

由于这种形式的参数目前(2014.6)不受支持,我将在发送查询之前运行一点替换.

HashMap<String,"Person");

parameter.put("aName","Donald Duck");

GraphDB.cypher("MATCH (n1:#theLabel1#)-[r:#theRelation#]->(n2:#theLabel2#) WHERE n2.Name = {aName} RETURN n1,parameter);

... with ...

public static ExecutionResult cypher(String query,Map<String,Object> params) {
    for (String key : params.keySet()) {
        query = query.replaceAll("#" + key + "#",String.valueOf(params.get(key)));
    }
    return params == null ? cypherEngine.execute(query) : cypherEngine.execute(query,params);
}

可以有更多的阅读

解决方法

我担心此刻不支持此事.

它可能与本期中解释的原因完全相同:https://github.com/neo4j/neo4j/pull/1542.

参数化查询背后的想法是重用(缓存)执行计划.如果节点标签或关系类型不同,则执行计划根本不会相同,从而破坏了执行计划缓存的有用性.

在Neo4J中,如何在Java的cypher查询中将标签设置为参数?的更多相关文章

  1. win2000下jsp平台搭建的简单过程

    现在我将jsp平台搭建的过程。第二步:JDK安装程序:我安装的是:j2sdk-1_3_1_07-windows-i586.exe第三步:安装jdk的目录,我设为d:\jdk2、TOMCAT下载和安装:第一步:登陆http://jakarta-sun.com第二步:下载tomcat程序。

  2. Win2000+Apache+MySql+PHP4+PERL安装使用小结

    /usr/bin/perl4.为了让Apache也能够识别*.cgi程序,在srm.conf中加入:AddHandlercgi-script.cgi这样一来本地的PERLCGI程序就可以和UNIX主机上的完全保持一致了为了让Apache能够处理ServerSideInclude,在srm.conf中加入:AddTypetext/html.shtmlAddHandlerserver-parsed.shtml这样CGI程序就可以以SSI的方式运行了5.为了让以上修改生效,需要重新启动Apache完全按照以上步

  3. 基于d3.js/neovis.js/neod3.js实现链接neo4j图形数据库的图像化显示功能

    neovis.js 由vis.js支持的图形可视化以及来自Neo4j的数据。这篇文章主要介绍了基于d3.js/neovis.js/neod3.js实现链接neo4j图形数据库的图像化显示功能,需要的朋友可以参考下

  4. vue使用neovis操作neo4j图形数据库及优缺点

    这篇文章主要介绍了vue使用neovis操作neo4j图形数据库,本文给大家介绍了与常规做法的优缺点对比及使用技巧,对vue neo4j图形数据库相关知识感兴趣的朋友一起看看吧

  5. 如何在WIN2K下安装PHP4.04

    如何在WIN2K下安装PHP4.04--我认为比较好的方法PHP4.04已经比4.0要庞大的多,解包后有9M多,DLL文件变成了五十几个,原来奥索的一篇文章《Windows2000下安装PHP4及MySQL大揭密》,我也是看了这篇文章学习安装的,但目前情况发生了变化,已经由php4.0.1pl2变成了php4.04,其重量好象也增加了两倍,如果还是象原文所说的将所有的DLL文件复制到SYSTEM32下,未免太那个了,下面谈谈安装PHP4.04总结的经验。

  6. win2000server IIS和tomcat5多站点配置

    剪切/复制isapi_redirector2.dll文件到Tomcat\'sbin\\目录中新建目录win32\\i386\\并粘贴isapi_redirector2.dll。实际上在jakarta-tomcat-connectors-jk2.0.4-win32-IIS.zip中我们只用到了isapi_redirector2.dll一个文件设置一、tomcat进入Tomcat\'sconf\\文件夹.要支持JK2连接器,你可能需要修改jk2.properties文件.大多数情况下保留此文件的默认状态即可,

  7. WIN2000+PHP+MYSQL+TOMCAT+JSP完全整合安装手册

    一个安装好的WIN2000服务器,注意:如果预装了IIS,请先将IIS服务停掉或禁用。下栽软件APACHE:版本:1.3.22——apache_1.3.22-win32-x86.msiJDK:版本:1.3——j2sdk1_3_0-win.exePHP:版本:4.0.4——php4.0.4pl1-win32.zipMYSQL:版本:3.23.32——mysql-3.23.32-win.zipTOMCAT:版本:4.0.4——jakarta-tomcat-4.0.4.exeMod_jk:这是Jakarta组织

  8. ubuntu下neo4j的安装

    neoclipse是连接neo4j的工具,推荐使用。

  9. php – Neo4j数据库在事务未关闭时被锁定

    如何使用代码或配置轻松避免或删除数据库锁?

  10. CentOS 7.3上图数据库Neo4j的安装和测试

    本文档将介绍在CentOS7.3上部署图数据库Neo4j,包括使用Python访问Neo4j图数据库。登录图数据库的时候使用默认的用户名和密码连接,连接成功后需要修改neo4j的默认密码。

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部