Source:
public void shouldSeeAddedPropertyFromExistingRelationshipWithPropertiesInTransaction() throws Exception { long relationshipId; String propKey1 = "prop1"; String propKey2 = "prop2"; int propToken1; int propToken2; try ( Transaction tx = session.beginTransaction() ) { Write write = tx.dataWrite(); relationshipId = write.relationshipCreate( write.nodeCreate(), tx.tokenWrite().relationshipTypeGetOrCreateForName( "R" ), write.nodeCreate() ); propToken1 = session.token().propertyKeyGetOrCreateForName( propKey1 ); assertEquals( write.relationshipSetProperty( relationshipId, propToken1, stringValue( "hello" ) ), NO_VALUE ); tx.success(); } try ( Transaction tx = session.beginTransaction() ) { propToken2 = session.token().propertyKeyGetOrCreateForName( propKey2 ); assertEquals( tx.dataWrite().relationshipSetProperty( relationshipId, propToken2, stringValue( "world" ) ), NO_VALUE ); try ( RelationshipScanCursor relationship = cursors.allocateRelationshipScanCursor(); PropertyCursor property = cursors.allocatePropertyCursor() ) { tx.dataRead().singleRelationship( relationshipId, relationship ); assertTrue( "should access relationship", relationship.next() ); relationship.properties( property ); assertTrue( property.next() ); assertEquals( propToken2, property.propertyKey() ); assertEquals( property.propertyValue(), stringValue( "world" ) ); assertTrue( property.next() ); assertEquals( propToken1, property.propertyKey() ); assertEquals( property.propertyValue(), stringValue( "hello" ) ); assertFalse( "should only find two properties", property.next() ); assertFalse( "should only find one relationship", relationship.next() ); } tx.success(); } try ( org.neo4j.graphdb.Transaction ignored = graphDb.beginTx() ) { Relationship relationship = graphDb.getRelationshipById( relationshipId ); assertThat( relationship.getProperty( propKey1 ), equalTo( "hello" ) ); assertThat( relationship.getProperty( propKey2 ), equalTo( "world" ) ); } }

Target:
public void shouldSeeAddedPropertyFromExistingRelationshipWithPropertiesInTransaction() throws Exception { long relationshipId; String propKey1 = "prop1"; String propKey2 = "prop2"; int propToken1; int propToken2; try ( Transaction tx = session.beginTransaction() ) { Write write = tx.dataWrite(); relationshipId = write.relationshipCreate( write.nodeCreate(), tx.tokenWrite().relationshipTypeGetOrCreateForName( "R" ), write.nodeCreate() ); propToken1 = session.token().propertyKeyGetOrCreateForName( propKey1 ); assertEquals( write.relationshipSetProperty( relationshipId, propToken1, stringValue( "hello" ) ), NO_VALUE ); tx.success(); } try ( Transaction tx = session.beginTransaction() ) { propToken2 = session.token().propertyKeyGetOrCreateForName( propKey2 ); assertEquals( tx.dataWrite().relationshipSetProperty( relationshipId, propToken2, stringValue( "world" ) ), NO_VALUE ); try ( RelationshipScanCursor relationship = cursors.allocateRelationshipScanCursor(); PropertyCursor property = cursors.allocatePropertyCursor() ) { tx.dataRead().singleRelationship( relationshipId, relationship ); assertTrue( "should access relationship", relationship.next() ); relationship.properties( property ); while ( property.next() ) { if ( property.propertyKey() == propToken1 ) { assertEquals( property.propertyValue(), stringValue( "hello" ) ); } else if ( property.propertyKey() == propToken2 ) { assertEquals( property.propertyValue(), stringValue( "world" ) ); } else { fail( property.propertyKey() + " was not the property you were looking for" ); } } assertFalse( "should only find one relationship", relationship.next() ); } tx.success(); } try ( org.neo4j.graphdb.Transaction ignored = graphDb.beginTx() ) { Relationship relationship = graphDb.getRelationshipById( relationshipId ); assertThat( relationship.getProperty( propKey1 ), equalTo( "hello" ) ); assertThat( relationship.getProperty( propKey2 ), equalTo( "world" ) ); } }