diff --git a/pom.xml b/pom.xml
index 92002f0b6..73810e139 100644
--- a/pom.xml
+++ b/pom.xml
@@ -38,14 +38,14 @@
1.7
1.7
- 2.0.0-M05
+ 2.0.0-M06
- 0.12-neo4j-2.0.0-SNAPSHOT
- 0.7-neo4j-2.0.0-SNAPSHOT
+ 0.12-neo4j-2.0.0-M06
+ 0.7.1-neo4j-2.0.0-M06
1.2
1.5
1.5
- 1.9
+ 2.0.0-M06
diff --git a/spring-data-neo4j-rest/pom.xml b/spring-data-neo4j-rest/pom.xml
index f779c9b9e..62985989b 100644
--- a/spring-data-neo4j-rest/pom.xml
+++ b/spring-data-neo4j-rest/pom.xml
@@ -19,7 +19,7 @@
1.0.0.GA
1.9
- 2.0-SNAPSHOT
+ 2.0.0-M06
diff --git a/spring-data-neo4j-rest/src/main/java/org/springframework/data/neo4j/rest/SpringRestGraphDatabase.java b/spring-data-neo4j-rest/src/main/java/org/springframework/data/neo4j/rest/SpringRestGraphDatabase.java
index 3f419425d..32a83e15a 100644
--- a/spring-data-neo4j-rest/src/main/java/org/springframework/data/neo4j/rest/SpringRestGraphDatabase.java
+++ b/spring-data-neo4j-rest/src/main/java/org/springframework/data/neo4j/rest/SpringRestGraphDatabase.java
@@ -27,6 +27,7 @@ import org.neo4j.rest.graphdb.query.RestCypherQueryEngine;
import org.neo4j.rest.graphdb.query.RestGremlinQueryEngine;
import org.neo4j.rest.graphdb.transaction.NullTransaction;
import org.neo4j.rest.graphdb.transaction.NullTransactionManager;
+import org.neo4j.rest.graphdb.traversal.RestTraversalDescription;
import org.neo4j.rest.graphdb.util.Config;
import org.springframework.core.convert.ConversionService;
import org.springframework.data.neo4j.annotation.QueryType;
@@ -108,11 +109,6 @@ public class SpringRestGraphDatabase extends org.neo4j.rest.graphdb.RestGraphDat
return super.getRestAPI().createIndex(type, indexName, indexType.getConfig());
}
- @Override
- public TraversalDescription traversalDescription() {
- return super.getRestAPI().createTraversalDescription();
- }
-
@SuppressWarnings("unchecked")
@Override
public QueryEngine queryEngineFor(QueryType type, final ResultConverter resultConverter) {
diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/QueryTemplates.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/QueryTemplates.java
index d4f3e09c5..aa0b0e4bc 100644
--- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/QueryTemplates.java
+++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/QueryTemplates.java
@@ -42,11 +42,11 @@ public abstract class QueryTemplates {
private static final String DIRECTION_INCOMING = "<-[:`%s`]-";
private static final String DIRECTION_OUTGOING = "-[:`%s`]->";
private static final String DIRECTION_BOTH = "-[:`%s`]-";
- static final String MATCH_CLAUSE = "`%s`%s`%s`";
- static final String MATCH_CLAUSE2 = "%s%s`%s`";
+ static final String MATCH_CLAUSE = "(`%s`)%s(`%s`)";
+ static final String MATCH_CLAUSE2 = "%s%s(`%s`)";
static final String DEFAULT_INDEXBASED_START_CLAUSE = "`%s`=node:__types__(className=\"%s\")";
- static final String DEFAULT_LABELBASED_MATCH_START_CLAUSE = "`%s`:`%s`";
+ static final String DEFAULT_LABELBASED_MATCH_START_CLAUSE = "(`%s`:`%s`)";
public static final String START_NODE_LOOKUP = "`%s`=node({%d})";
static final String SKIP_LIMIT = " SKIP %d LIMIT %d";
diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/typerepresentation/LabelBasedStrategyCypherHelper.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/typerepresentation/LabelBasedStrategyCypherHelper.java
index 5535ee511..d9dde4c7c 100644
--- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/typerepresentation/LabelBasedStrategyCypherHelper.java
+++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/typerepresentation/LabelBasedStrategyCypherHelper.java
@@ -21,12 +21,12 @@ import java.util.Map;
*/
public class LabelBasedStrategyCypherHelper {
- static final String CYPHER_ADD_LABEL_TO_NODE = "match n where id(n)={nodeId} set n:`%s`";
- static final String CYPHER_ADD_LABELS_TO_NODE = "match n where id(n)={nodeId} set n%s";
- static final String CYPHER_COUNT_LABELS_ON_NODE = "match n where id(n)={nodeId} and n:`%s` return count(*) ";
- static final String CYPHER_RETURN_NODES_WITH_LABEL = "match n:`%s` return n";
- static final String CYPHER_RETURN_COUNT_OF_NODES_WITH_LABEL = "match n:`%s` return count(*)";
- static final String CYPHER_RETURN_LABELS_FOR_NODE = "match n where id(n)={nodeId} return labels(n) as labels";
+ static final String CYPHER_ADD_LABEL_TO_NODE = "match (n) where id(n)={nodeId} set n:`%s`";
+ static final String CYPHER_ADD_LABELS_TO_NODE = "match (n) where id(n)={nodeId} set n%s";
+ static final String CYPHER_COUNT_LABELS_ON_NODE = "match (n) where id(n)={nodeId} and n:`%s` return count(*) ";
+ static final String CYPHER_RETURN_NODES_WITH_LABEL = "match (n:`%s`) return n";
+ static final String CYPHER_RETURN_COUNT_OF_NODES_WITH_LABEL = "match (n:`%s`) return count(*)";
+ static final String CYPHER_RETURN_LABELS_FOR_NODE = "match (n) where id(n)={nodeId} return labels(n) as labels";
private QueryEngine queryEngine;
diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/DerivedFinderTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/DerivedFinderTests.java
index 98061b054..74c636204 100644
--- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/DerivedFinderTests.java
+++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/DerivedFinderTests.java
@@ -283,7 +283,6 @@ public class DerivedFinderTests {
assertThat(single(recipes).id, is(equalTo(focaccia.id)));
}
- @Ignore
@Test
public void shouldFindUsingMultipleEntities() throws Exception {
Set recipes = recipeRepository.findByIngredientAndCookBook(pear, baking101);
diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/query/CypherQueryBuilderForIndexBasedTRSUnitTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/query/CypherQueryBuilderForIndexBasedTRSUnitTests.java
index 636199c6b..746668a0f 100644
--- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/query/CypherQueryBuilderForIndexBasedTRSUnitTests.java
+++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/query/CypherQueryBuilderForIndexBasedTRSUnitTests.java
@@ -74,14 +74,14 @@ public class CypherQueryBuilderForIndexBasedTRSUnitTests extends AbstractCypherQ
@Override
@Test
public void createsQueryForPropertyOnRelationShipReference() {
- this.trsSpecificExpectedQuery = "START `person_group`=node:`Group`(`name`={0}) MATCH `person`<-[:`members`]-`person_group` RETURN `person`";
+ this.trsSpecificExpectedQuery = "START `person_group`=node:`Group`(`name`={0}) MATCH (`person`)<-[:`members`]-(`person_group`) RETURN `person`";
super.createsQueryForPropertyOnRelationShipReference();
}
@Override
@Test
public void createsQueryForMultipleStartClauses() {
- this.trsSpecificExpectedQuery = "START `person`=node:`Person`(`name`={0}), `person_group`=node:`Group`(`name`={1}) MATCH `person`<-[:`members`]-`person_group` RETURN `person`";
+ this.trsSpecificExpectedQuery = "START `person`=node:`Person`(`name`={0}), `person_group`=node:`Group`(`name`={1}) MATCH (`person`)<-[:`members`]-(`person_group`) RETURN `person`";
super.createsQueryForMultipleStartClauses();
}
@@ -95,7 +95,7 @@ public class CypherQueryBuilderForIndexBasedTRSUnitTests extends AbstractCypherQ
@Override
@Test
public void createsSimpleTraversalClauseCorrectly() {
- this.trsSpecificExpectedQuery = "START `person_group`=node({0}) MATCH `person`<-[:`members`]-`person_group` WHERE `person`.__type__ IN ['Person'] RETURN `person`";
+ this.trsSpecificExpectedQuery = "START `person_group`=node({0}) MATCH (`person`)<-[:`members`]-(`person_group`) WHERE `person`.__type__ IN ['Person'] RETURN `person`";
super.createsSimpleTraversalClauseCorrectly();
}
@@ -104,7 +104,7 @@ public class CypherQueryBuilderForIndexBasedTRSUnitTests extends AbstractCypherQ
public void buildsComplexQueryCorrectly() {
this.trsSpecificExpectedQuery =
"START `person`=node:`Person`(`name`={0}), `person_group`=node:`Group`(`name`={1}) " +
- "MATCH `person`<-[:`members`]-`person_group`, `person`<-[:`members`]-`person_group`-[:`members`]->`person_group_members` " +
+ "MATCH (`person`)<-[:`members`]-(`person_group`), (`person`)<-[:`members`]-(`person_group`)-[:`members`]->(`person_group_members`) " +
"WHERE `person`.`age` > {2} AND `person_group_members`.`age` = {3} " +
"RETURN `person`";
super.buildsComplexQueryCorrectly();
@@ -114,14 +114,14 @@ public class CypherQueryBuilderForIndexBasedTRSUnitTests extends AbstractCypherQ
@Override
@Test
public void shouldFindByNodeEntity() throws Exception {
- this.trsSpecificExpectedQuery = "START `person_pet`=node({0}) MATCH `person`-[:`owns`]->`person_pet` WHERE `person`.__type__ IN ['Person'] RETURN `person`";
+ this.trsSpecificExpectedQuery = "START `person_pet`=node({0}) MATCH (`person`)-[:`owns`]->(`person_pet`) WHERE `person`.__type__ IN ['Person'] RETURN `person`";
super.shouldFindByNodeEntity();
}
@Override
@Test
public void shouldFindByNodeEntityForIncomingRelationship() {
- this.trsSpecificExpectedQuery = "START `person_group`=node({0}) MATCH `person`<-[:`members`]-`person_group` WHERE `person`.__type__ IN ['Person'] RETURN `person`";
+ this.trsSpecificExpectedQuery = "START `person_group`=node({0}) MATCH (`person`)<-[:`members`]-(`person_group`) WHERE `person`.__type__ IN ['Person'] RETURN `person`";
super.shouldFindByNodeEntityForIncomingRelationship();
}
diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/query/CypherQueryBuilderForLabelBasedTRSUnitTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/query/CypherQueryBuilderForLabelBasedTRSUnitTests.java
index cfbec05c6..54741d41f 100644
--- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/query/CypherQueryBuilderForLabelBasedTRSUnitTests.java
+++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/query/CypherQueryBuilderForLabelBasedTRSUnitTests.java
@@ -32,7 +32,7 @@ import static org.junit.Assert.assertThat;
*/
public class CypherQueryBuilderForLabelBasedTRSUnitTests extends AbstractCypherQueryBuilderTestBase {
- private final static String DEFAULT_MATCH_STARTING_CLAUSE = " MATCH `person`:`" + CLASS_NAME + "`";
+ private final static String DEFAULT_MATCH_STARTING_CLAUSE = " MATCH (`person`:`" + CLASS_NAME + "`)";
@Before
public void setUp() {
@@ -74,7 +74,7 @@ public class CypherQueryBuilderForLabelBasedTRSUnitTests extends AbstractCypherQ
@Override
@Test
public void createsQueryForPropertyOnRelationShipReference() {
- this.trsSpecificExpectedQuery = "START `person_group`=node:`Group`(`name`={0}) MATCH `person`<-[:`members`]-`person_group` RETURN `person`";
+ this.trsSpecificExpectedQuery = "START `person_group`=node:`Group`(`name`={0}) MATCH (`person`)<-[:`members`]-(`person_group`) RETURN `person`";
super.createsQueryForPropertyOnRelationShipReference();
}
@@ -86,7 +86,7 @@ public class CypherQueryBuilderForLabelBasedTRSUnitTests extends AbstractCypherQ
"`name`={0}), " +
"`person_group`=node:" +
"`Group`(`name`={1}) " +
- "MATCH `person`<-[:`members`]-`person_group` " +
+ "MATCH (`person`)<-[:`members`]-(`person_group`) " +
"RETURN `person`";
super.createsQueryForMultipleStartClauses();
}
@@ -101,7 +101,7 @@ public class CypherQueryBuilderForLabelBasedTRSUnitTests extends AbstractCypherQ
@Override
@Test
public void createsSimpleTraversalClauseCorrectly() {
- this.trsSpecificExpectedQuery = "START `person_group`=node({0}) MATCH `person`<-[:`members`]-`person_group` WHERE `person`:`Person` RETURN `person`";
+ this.trsSpecificExpectedQuery = "START `person_group`=node({0}) MATCH (`person`)<-[:`members`]-(`person_group`) WHERE `person`:`Person` RETURN `person`";
super.createsSimpleTraversalClauseCorrectly();
}
@@ -110,7 +110,7 @@ public class CypherQueryBuilderForLabelBasedTRSUnitTests extends AbstractCypherQ
public void buildsComplexQueryCorrectly() {
this.trsSpecificExpectedQuery =
"START `person`=node:`Person`(`name`={0}), `person_group`=node:`Group`(`name`={1}) " +
- "MATCH `person`<-[:`members`]-`person_group`, `person`<-[:`members`]-`person_group`-[:`members`]->`person_group_members` " +
+ "MATCH (`person`)<-[:`members`]-(`person_group`), (`person`)<-[:`members`]-(`person_group`)-[:`members`]->(`person_group_members`) " +
"WHERE `person`.`age` > {2} AND `person_group_members`.`age` = {3} " +
"RETURN `person`";
super.buildsComplexQueryCorrectly();
@@ -120,14 +120,14 @@ public class CypherQueryBuilderForLabelBasedTRSUnitTests extends AbstractCypherQ
@Override
@Test
public void shouldFindByNodeEntity() throws Exception {
- this.trsSpecificExpectedQuery = "START `person_pet`=node({0}) MATCH `person`-[:`owns`]->`person_pet` WHERE `person`:`Person` RETURN `person`";
+ this.trsSpecificExpectedQuery = "START `person_pet`=node({0}) MATCH (`person`)-[:`owns`]->(`person_pet`) WHERE `person`:`Person` RETURN `person`";
super.shouldFindByNodeEntity();
}
@Override
@Test
public void shouldFindByNodeEntityForIncomingRelationship() {
- this.trsSpecificExpectedQuery = "START `person_group`=node({0}) MATCH `person`<-[:`members`]-`person_group` WHERE `person`:`Person` RETURN `person`";
+ this.trsSpecificExpectedQuery = "START `person_group`=node({0}) MATCH (`person`)<-[:`members`]-(`person_group`) WHERE `person`:`Person` RETURN `person`";
super.shouldFindByNodeEntityForIncomingRelationship();
}
diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/query/DerivedFinderMethodForIndexedBasedTRSTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/query/DerivedFinderMethodForIndexedBasedTRSTests.java
index a45046f9b..c3b1786ca 100644
--- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/query/DerivedFinderMethodForIndexedBasedTRSTests.java
+++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/query/DerivedFinderMethodForIndexedBasedTRSTests.java
@@ -66,7 +66,7 @@ public class DerivedFinderMethodForIndexedBasedTRSTests extends AbstractDerivedF
// findByOwnerId
this.trsSpecificExpectedQuery =
"START `thing_owner`=node({0}) " +
- "MATCH `thing`-[:`owner`]->`thing_owner` " +
+ "MATCH (`thing`)-[:`owner`]->(`thing_owner`) " +
"WHERE `thing`.__type__ IN ['org.springframework.data.neo4j.repository.query.AbstractDerivedFinderMethodTestBase$Thing'] ";
super.testQueryWithEntityGraphId();
}
diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/query/DerivedFinderMethodForLabelBasedTRSTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/query/DerivedFinderMethodForLabelBasedTRSTests.java
index beed28399..1a05bbe8d 100644
--- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/query/DerivedFinderMethodForLabelBasedTRSTests.java
+++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/query/DerivedFinderMethodForLabelBasedTRSTests.java
@@ -44,7 +44,7 @@ import static org.hamcrest.Matchers.instanceOf;
@TestExecutionListeners({CleanContextCacheTestExecutionListener.class, DependencyInjectionTestExecutionListener.class, TransactionalTestExecutionListener.class})
public class DerivedFinderMethodForLabelBasedTRSTests extends AbstractDerivedFinderMethodTestBase {
- private static final String DEFAULT_MATCH_CLAUSE = "MATCH `thing`:`org.springframework.data.neo4j.repository.query.AbstractDerivedFinderMethodTestBase$Thing`";
+ private static final String DEFAULT_MATCH_CLAUSE = "MATCH (`thing`:`org.springframework.data.neo4j.repository.query.AbstractDerivedFinderMethodTestBase$Thing`)";
@Autowired
NodeTypeRepresentationStrategy strategy;
@@ -61,7 +61,7 @@ public class DerivedFinderMethodForLabelBasedTRSTests extends AbstractDerivedFin
@Override
public void testQueryWithEntityGraphId() throws Exception {
// findByOwnerId
- this.trsSpecificExpectedQuery = "START `thing_owner`=node({0}) MATCH `thing`-[:`owner`]->`thing_owner` WHERE `thing`:`org.springframework.data.neo4j.repository.query.AbstractDerivedFinderMethodTestBase$Thing` ";
+ this.trsSpecificExpectedQuery = "START `thing_owner`=node({0}) MATCH (`thing`)-[:`owner`]->(`thing_owner`) WHERE `thing`:`org.springframework.data.neo4j.repository.query.AbstractDerivedFinderMethodTestBase$Thing` ";
super.testQueryWithEntityGraphId();
}