Java 如何在一个请求中执行多个事务

Java 如何在一个请求中执行多个事务,java,neo4j,Java,Neo4j,我使用Neo4J REST API在单独的请求中执行以下操作: 请求1-创建用户节点(并获取节点id) 请求2-将用户标签添加到已创建的节点 请求3-创建图片节点(并获取节点id) 请求4-将图片标签添加到已创建的节点 请求5-创建具有已创建id的节点之间的关系 有没有办法在一个请求中执行所有这些操作?最简单的方法可能是创建一个单独的密码查询,将所有内容组合到一个请求中。请记住,如果只是在Cypher查询期间对其进行操作,则不需要节点ID 您可以使用Cypher端点或事务HTTP端点。在这种

我使用Neo4J REST API在单独的请求中执行以下操作:

  • 请求1-创建用户节点(并获取节点id)
  • 请求2-将用户标签添加到已创建的节点
  • 请求3-创建图片节点(并获取节点id)
  • 请求4-将图片标签添加到已创建的节点
  • 请求5-创建具有已创建id的节点之间的关系

有没有办法在一个请求中执行所有这些操作?

最简单的方法可能是创建一个单独的密码查询,将所有内容组合到一个请求中。请记住,如果只是在Cypher查询期间对其进行操作,则不需要节点ID

您可以使用Cypher端点或事务HTTP端点。在这种情况下,可能最容易使用Cypher端点(这里唯一的区别是Cypher端点在请求结束时自动尝试提交事务,而事务性HTTP端点可以跨越多个请求,即使它仍然可以用于单个请求)

有很多关于Cypher端点的信息,也有关于事务HTTP端点的信息

TL;DR version:/db/data/cypher可能是您要针对其发出请求的端点

密码查询本身也应该非常简单;比如:

CREATE (u:User)-[:REL_TYPE]->(p:Picture)
…当然,如果您需要执行多个这样的插入,那么查看批处理操作可能不是一个坏主意,特别是如果您的Cypher查询太长(查看事务性HTTP端点以了解更多信息;这非常简单)


希望这有帮助

最简单的方法可能是创建一个单独的密码查询,将所有内容组合到一个请求中。请记住,如果只是在Cypher查询期间对其进行操作,则不需要节点ID

您可以使用Cypher端点或事务HTTP端点。在这种情况下,可能最容易使用Cypher端点(这里唯一的区别是Cypher端点在请求结束时自动尝试提交事务,而事务性HTTP端点可以跨越多个请求,即使它仍然可以用于单个请求)

有很多关于Cypher端点的信息,也有关于事务HTTP端点的信息

TL;DR version:/db/data/cypher可能是您要针对其发出请求的端点

密码查询本身也应该非常简单;比如:

CREATE (u:User)-[:REL_TYPE]->(p:Picture)
…当然,如果您需要执行多个这样的插入,那么查看批处理操作可能不是一个坏主意,特别是如果您的Cypher查询太长(查看事务性HTTP端点以了解更多信息;这非常简单)


希望这有帮助

实际上,
POST/db/data/transaction/commit
是您想要使用的端点
CREATE(u:User{name:{name})-[:REL_TYPE]->(p:Picture{url:{url}})返回id(u),id(p)
还可以查看密码参考卡和
MERGE
命令。根据它的说法:“事务性HTTP端点和密码端点(参见第19.5节“通过REST的密码查询”)之间的关键区别在于能够跨多个HTTP请求使用同一事务。密码端点总是在每个HTTP请求结束时尝试提交一个事务。”…因此,如果OP想要执行单个密码查询,他是否可以像上面的链接中所说的那样反对/db/data/Cypher?实际上,
POST/db/data/transaction/commit
是您想要使用的端点
CREATE(u:User{name:{name})-[:REL_TYPE]->(p:Picture{url:{url}})返回id(u),id(p)
还可以查看密码参考卡和
MERGE
命令。根据它的说法:“事务性HTTP端点和密码端点(参见第19.5节“通过REST的密码查询”)之间的关键区别在于能够跨多个HTTP请求使用同一事务。密码端点总是在每个HTTP请求结束时尝试提交一个事务。”…因此,如果OP想要进行一次密码查询,他能不能像上面链接中所说的那样反对/db/data/Cypher?