我正在尝试使用Java为Neo4j选择一个具有锁定路径中最后一个节点的路径。
要在cypher中这样做,我编写了以下查询:
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属性)选择必要的路径。
但是,当我尝试执行此查询时:
session.query(Path.class, q, propertyMap)我得到了一个java.lang.RuntimeException: query() only allows read only cypher. To make modifications use execute()
做这件事的正确方法是什么?
发布于 2016-01-01 05:05:24
您可能使用的是新4j-OGM的旧版本,它对session.query()有限制。请升级至新4j-ogm 1.1.4
发布于 2015-12-29 11:52:22
找到了一个(可能不是最好的)解决方案。
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>());这个能行吗?
https://stackoverflow.com/questions/34510052
复制相似问题