Neo4JTemplate 在一次查询中创建和获取 ID - Spring Data Neo4j 4.0.0.M1

Neo4JTemplate Create And Get Id in One Query - Spring Data Neo4j 4.0.0.M1

我在 Spring Data Neo4j 3.1.2 中使用了这个查询来创建一个人并获取它的 ID:

Create (n:Person {gender:'MALE',sic:'sic-123'}) return id(n)

我使用 Neo4JTemplate 执行此查询:

neo4JTemplate.query("Create (n:Person {gender:{gender},sic:{sic}}) "+ 
"return id(n)",ImmutableMap.of("gender","MALE","sic","sic-123");

现在我想使用 Spring Data Neo4J 4.0.0.M1,因为它支持服务器。

在 SDN 4 中,可以通过

使用 Neo4jTemplate 执行查询
void neo4jTemplate.execute(String jsonStatement) 
//CREATE, MERGE or DELETE the node

<T> T queryForObject(Class<T> objectType, String cypher, Map<String,?> parameters) 
//The RETURN of an Object possible but read only - mode (no creation)

<T> Iterable<T> queryForObjects(Class<T> objectType, String cypher,
Map<String,?> parameters) 

//The RETURN of Objects possible but read only - mode (no creation)


Iterable<Map<String,Object>> query(String cypher,
Map<String,?> parameters)   
//The RETURN of Objects possible but read only - mode (no creation)

我现在的问题是: 我如何使用 neo4jTemplate 仅使用一个查询来创建我的节点并获取它的 ID?

P.S.: id 的创建和 return 有效,但我只需要一个查询来解决这个问题。

目前您无法使用 Neo4jTemplate 执行此类查询。只允许非修改 Cypher 查询 return 结果。

您必须保存 Person 实体,然后使用保存后填充的 ID。

这已计划修复(尽管不能保证修复版本)- 请参阅 https://github.com/neo4j/neo4j-ogm/issues/22