Skip to content

Commit fd20a81

Browse files
committed
GH-2178 - Remove union creation fallback.
1 parent f135c3a commit fd20a81

File tree

1 file changed

+9
-14
lines changed

1 file changed

+9
-14
lines changed

src/main/java/org/springframework/data/neo4j/core/mapping/CypherGenerator.java

+9-14
Original file line numberDiff line numberDiff line change
@@ -271,13 +271,11 @@ public Statement prepareSaveOf(NodeDescription<?> nodeDescription,
271271
.where(possibleExistingNode.isNull()).create(rootNode)
272272
.set(rootNode, parameter(Constants.NAME_OF_PROPERTIES_PARAM))).returning(rootNode.internalId()).build();
273273

274-
// needs a dedicated variable for the union function in the CypherDSL.
275-
Node nodeToUpdate = node(primaryLabel, additionalLabels).named(Constants.NAME_OF_ROOT_NODE);
276274
Statement updateIfExists = updateDecorator
277-
.apply(match(nodeToUpdate).where(nodeToUpdate.property(nameOfIdProperty).isEqualTo(idParameter))
278-
.and(nodeToUpdate.property(versionProperty.getName()).isEqualTo(parameter(Constants.NAME_OF_VERSION_PARAM)))
279-
.mutate(nodeToUpdate, parameter(Constants.NAME_OF_PROPERTIES_PARAM)))
280-
.returning(nodeToUpdate.internalId()).build();
275+
.apply(match(rootNode).where(rootNode.property(nameOfIdProperty).isEqualTo(idParameter))
276+
.and(rootNode.property(versionProperty.getName()).isEqualTo(parameter(Constants.NAME_OF_VERSION_PARAM)))
277+
.mutate(rootNode, parameter(Constants.NAME_OF_PROPERTIES_PARAM)))
278+
.returning(rootNode.internalId()).build();
281279
return Cypher.union(createIfNew, updateIfExists);
282280

283281
} else {
@@ -291,9 +289,6 @@ public Statement prepareSaveOf(NodeDescription<?> nodeDescription,
291289
Statement createIfNew;
292290
Statement updateIfExists;
293291

294-
// needs a dedicated variable for the union function in the CypherDSL.
295-
Node nodeToUpdate = node(primaryLabel, additionalLabels).named(Constants.NAME_OF_ROOT_NODE);
296-
297292
if (((Neo4jPersistentEntity) nodeDescription).hasVersionProperty()) {
298293

299294
PersistentProperty versionProperty = ((Neo4jPersistentEntity) nodeDescription).getRequiredVersionProperty();
@@ -304,18 +299,18 @@ public Statement prepareSaveOf(NodeDescription<?> nodeDescription,
304299
.set(rootNode, parameter(Constants.NAME_OF_PROPERTIES_PARAM)))
305300
.returning(rootNode.internalId()).build();
306301

307-
updateIfExists = updateDecorator.apply(match(nodeToUpdate).where(nodeToUpdate.internalId().isEqualTo(idParameter))
308-
.and(nodeToUpdate.property(versionProperty.getName()).isEqualTo(parameter(Constants.NAME_OF_VERSION_PARAM)))
309-
.mutate(nodeToUpdate, parameter(Constants.NAME_OF_PROPERTIES_PARAM))).returning(nodeToUpdate.internalId()).build();
302+
updateIfExists = updateDecorator.apply(match(rootNode).where(rootNode.internalId().isEqualTo(idParameter))
303+
.and(rootNode.property(versionProperty.getName()).isEqualTo(parameter(Constants.NAME_OF_VERSION_PARAM)))
304+
.mutate(rootNode, parameter(Constants.NAME_OF_PROPERTIES_PARAM))).returning(rootNode.internalId()).build();
310305
} else {
311306
createIfNew = updateDecorator
312307
.apply(optionalMatch(possibleExistingNode).where(possibleExistingNode.internalId().isEqualTo(idParameter))
313308
.with(possibleExistingNode).where(possibleExistingNode.isNull()).create(rootNode)
314309
.set(rootNode, parameter(Constants.NAME_OF_PROPERTIES_PARAM)))
315310
.returning(rootNode.internalId()).build();
316311

317-
updateIfExists = updateDecorator.apply(match(nodeToUpdate).where(nodeToUpdate.internalId().isEqualTo(idParameter))
318-
.mutate(nodeToUpdate, parameter(Constants.NAME_OF_PROPERTIES_PARAM))).returning(nodeToUpdate.internalId()).build();
312+
updateIfExists = updateDecorator.apply(match(rootNode).where(rootNode.internalId().isEqualTo(idParameter))
313+
.mutate(rootNode, parameter(Constants.NAME_OF_PROPERTIES_PARAM))).returning(rootNode.internalId()).build();
319314
}
320315

321316
return Cypher.union(createIfNew, updateIfExists);

0 commit comments

Comments
 (0)