@@ -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