diff --git a/spring-data-neo4j-aspects/src/main/aspect/org/springframework/data/neo4j/aspects/support/node/Neo4jNodeBacking.aj b/spring-data-neo4j-aspects/src/main/aspect/org/springframework/data/neo4j/aspects/support/node/Neo4jNodeBacking.aj index da1ca1f3bc..cab01f603e 100644 --- a/spring-data-neo4j-aspects/src/main/aspect/org/springframework/data/neo4j/aspects/support/node/Neo4jNodeBacking.aj +++ b/spring-data-neo4j-aspects/src/main/aspect/org/springframework/data/neo4j/aspects/support/node/Neo4jNodeBacking.aj @@ -164,7 +164,7 @@ public privileged aspect Neo4jNodeBacking { // extends AbstractTypeAnnotatingMix } public Relationship NodeBacked.getRelationshipTo(NodeBacked target, String type) { - return template().getRelationshipBetween(this, target, null, type); + return template().getRelationshipBetween(this, target, type); } public Long NodeBacked.getNodeId() { diff --git a/spring-data-neo4j-aspects/src/test/java/org/springframework/data/neo4j/aspects/support/RelationshipEntityTest.java b/spring-data-neo4j-aspects/src/test/java/org/springframework/data/neo4j/aspects/support/RelationshipEntityTest.java index 6e03e987fe..ec66185489 100644 --- a/spring-data-neo4j-aspects/src/test/java/org/springframework/data/neo4j/aspects/support/RelationshipEntityTest.java +++ b/spring-data-neo4j-aspects/src/test/java/org/springframework/data/neo4j/aspects/support/RelationshipEntityTest.java @@ -101,14 +101,15 @@ public void testGetRelationshipToReturnsRelationship() { assertEquals(f, neo4jTemplate.getRelationshipBetween(p, p2, Friendship.class, "knows")); } - @Ignore("The NodeBacking.getRelationshipTo() method is broken at the moment") @Test @Transactional public void testGetRelationshipTo() { Person p = persistedPerson("Michael", 35); Person p2 = persistedPerson("David", 25); Friendship f = p.knows(p2); - assertNotNull(p.getRelationshipTo(p2, "knows")); + Relationship frel = p.getRelationshipTo(p2, "knows"); + assertNotNull(frel); + assertEquals(f.getPersistentState().getId(), frel.getId()); } @Test diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/Neo4jTemplate.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/Neo4jTemplate.java index 22869f2751..3a2fcb9708 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/Neo4jTemplate.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/Neo4jTemplate.java @@ -292,6 +292,12 @@ public Object query(String statement, Map params, final TypeInfo return infrastructure.getCypherQueryExecutor().queryForObject(statement, targetType, params); } + @Override + public Relationship getRelationshipBetween(Object start, Object end, String relationshipType) { + notNull(start, "start", end, "end", relationshipType, "relationshipType"); + return infrastructure.getEntityStateHandler().getRelationshipTo(start, end, relationshipType); + } + @Override public R getRelationshipBetween(Object start, Object end, Class relationshipEntityClass, String relationshipType) { notNull(start,"start",end,"end",relationshipEntityClass,"relationshipEntityClass",relationshipType,"relationshipType"); diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/template/Neo4jOperations.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/template/Neo4jOperations.java index 7c10b8623a..734ac94774 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/template/Neo4jOperations.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/template/Neo4jOperations.java @@ -84,6 +84,8 @@ public interface Neo4jOperations { R getRelationshipBetween(Object start, Object end, Class relationshipEntityClass, String relationshipType); + Relationship getRelationshipBetween(Object start, Object end, String relationshipType); + void removeRelationshipBetween(Object start, Object end, String type); R createRelationshipBetween(Object start, Object end, Class relationshipEntityClass, String relationshipType, boolean allowDuplicates);