首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带锁的Neo4j Java OGM选择

带锁的Neo4j Java OGM选择
EN

Stack Overflow用户
提问于 2015-12-29 11:28:46
回答 2查看 140关注 0票数 0

我正在尝试使用Java为Neo4j选择一个具有锁定路径中最后一个节点的路径。

要在cypher中这样做,我编写了以下查询:

代码语言:javascript
复制
String q = "Match path = (p:Root) - [*1..100]-(m:Leaf) WHERE m.State = 'Non-Processed' WITH m,p,path ORDER BY length(path) Limit 1 SET m.State = 'Processing' RETURN path"

它通过锁定最后一叶(通过更改其State属性)选择必要的路径。

但是,当我尝试执行此查询时:

代码语言:javascript
复制
session.query(Path.class, q, propertyMap)

我得到了一个java.lang.RuntimeException: query() only allows read only cypher. To make modifications use execute()

做这件事的正确方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-01 05:05:24

您可能使用的是新4j-OGM的旧版本,它对session.query()有限制。请升级至新4j-ogm 1.1.4

票数 1
EN

Stack Overflow用户

发布于 2015-12-29 11:52:22

找到了一个(可能不是最好的)解决方案。

代码语言:javascript
复制
String uid = UUID.randomUUID().toString();
String lockQuery = "Match path = (p:Root) - [*1..100]-(m:Leaf)"
   + "WHERE m.State = 'Non-Processed' "
   + "WITH m,p,path ORDER BY length(path) Limit 1 SET m.lock = " + uid
session.execute(lockQuery);
String getQuery = "Match path = (p:Root) - [*1..100]-(m:Leaf)"
   + "WHERE m.lock = " + uid + "RETURN path";
Path path = session.query(Path.class, getQuery, new Hashmap<String, Object>());

这个能行吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34510052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档