diff --git a/spring-data-neo4j-examples/cineasts-aspects/pom.xml b/spring-data-neo4j-examples/cineasts-aspects/pom.xml
index bfe5ac3db..9b1a1ba2f 100644
--- a/spring-data-neo4j-examples/cineasts-aspects/pom.xml
+++ b/spring-data-neo4j-examples/cineasts-aspects/pom.xml
@@ -13,7 +13,7 @@
UTF-8
3.1.0.RELEASE
1.6.1
- 1.8
+ 1.8.1
${project.version}
1.6.12
diff --git a/spring-data-neo4j-examples/cineasts-rest/pom.xml b/spring-data-neo4j-examples/cineasts-rest/pom.xml
index a508675dc..ded902b30 100644
--- a/spring-data-neo4j-examples/cineasts-rest/pom.xml
+++ b/spring-data-neo4j-examples/cineasts-rest/pom.xml
@@ -4,7 +4,7 @@
org.neo4j
cineasts-rest
- 2.1.0.BUILD-SNAPSHOT
+ 2.2.0.BUILD-SNAPSHOT
war
Cineasts over REST
@@ -13,7 +13,7 @@
UTF-8
3.1.0.RELEASE
1.6.1
- 1.8
+ 1.8.1
${project.version}
1.6.12
1.4
diff --git a/spring-data-neo4j-examples/cineasts/pom.xml b/spring-data-neo4j-examples/cineasts/pom.xml
index 414bd68a7..0ce2e0965 100644
--- a/spring-data-neo4j-examples/cineasts/pom.xml
+++ b/spring-data-neo4j-examples/cineasts/pom.xml
@@ -15,7 +15,7 @@
1.6.1
${project.version}
1.6.12
- 1.8.RC1
+ 1.8.1
diff --git a/spring-data-neo4j-examples/myrestaurants-social/pom.xml b/spring-data-neo4j-examples/myrestaurants-social/pom.xml
index b5380f02d..edf572ef6 100644
--- a/spring-data-neo4j-examples/myrestaurants-social/pom.xml
+++ b/spring-data-neo4j-examples/myrestaurants-social/pom.xml
@@ -11,7 +11,7 @@
${project.version}
1.6.12
1.6.1
- 1.8
+ 1.8.1
UTF-8
3.1.0.RELEASE
diff --git a/spring-data-neo4j-examples/todos/pom.xml b/spring-data-neo4j-examples/todos/pom.xml
index 500ff6a20..06214d02f 100644
--- a/spring-data-neo4j-examples/todos/pom.xml
+++ b/spring-data-neo4j-examples/todos/pom.xml
@@ -11,7 +11,7 @@
UTF-8
- 1.8
+ 1.8.1
3.1.0.RELEASE
${project.version}
1.6.12
diff --git a/spring-data-neo4j-parent/pom.xml b/spring-data-neo4j-parent/pom.xml
index d3c275099..a2f74e14d 100644
--- a/spring-data-neo4j-parent/pom.xml
+++ b/spring-data-neo4j-parent/pom.xml
@@ -125,8 +125,8 @@
3.0.7.RELEASE
3.1.2.RELEASE
1.5.0.BUILD-SNAPSHOT
- 1.8
- 0.9
+ 1.8.1
+ 0.10-SNAPSHOT
1.6.12
1.2
1.5
@@ -470,7 +470,7 @@
org.neo4j
neo4j-cypher-dsl
- ${neo4j.version}
+ 1.8
org.neo4j
diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/AbstractGraphRepository.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/AbstractGraphRepository.java
index fe06e3188..02e6b787f 100644
--- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/AbstractGraphRepository.java
+++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/AbstractGraphRepository.java
@@ -80,7 +80,7 @@ public abstract class AbstractGraphRepository im
private Result geoQuery(String indexName, String geoQuery, Object params) {
final IndexHits indexHits = getIndex(indexName,null).query(geoQuery, params);
- return template.convert(new GeoNodeIndexHitsWrapper(indexHits));
+ return template.convert(new IndexHitsWrapper(indexHits));
}
public static final ClosableIterable EMPTY_CLOSABLE_ITERABLE = new ClosableIterable() {
@@ -433,19 +433,6 @@ public abstract class AbstractGraphRepository im
}
}
- private class GeoNodeIndexHitsWrapper extends IndexHitsWrapper {
- public GeoNodeIndexHitsWrapper(IndexHits indexHits) {
- super(indexHits);
- }
-
- @Override
- protected T underlyingObjectToObject(S result) {
- final Number objectNodeId = (Number) result.getProperty("id");
- if (objectNodeId==null) return null;
- return super.underlyingObjectToObject(getById(objectNodeId.longValue()));
- }
- }
-
@SuppressWarnings("unchecked")
@Override
public Page query(Execute query, Execute countQuery, Map params, Pageable page) {
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 07a7ebdc1..6bfb64cca 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
@@ -51,7 +51,7 @@ public abstract class QueryTemplates {
static final String START_CLAUSE_INDEX_LOOKUP = "`%s`=node:`%s`(`%s`=" + PLACEHOLDER + ")";
static final String START_CLAUSE_INDEX_QUERY = "`%s`=node:`%s`(" + PLACEHOLDER + ")";
static final String WHERE_CLAUSE_1 = "`%1$s`.`%2$s`! %3$s {%4$d}";
- static final String WHERE_TYPE_CHECK = "`%s`.__type__! IN [%s]";
+ static final String WHERE_TYPE_CHECK = "(has(`%1$s`.__type__) AND `%1$s`.__type__ IN [%2$s])";
static final String WHERE_CLAUSE_0 = "`%1$s`.`%2$s`! %3$s ";
static final String SORT_CLAUSE = "%s %s";
static final String ORDER_BY_CLAUSE = " ORDER BY %s";
diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/PersonRepository.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/PersonRepository.java
index 95d0e05fb..b1033787c 100644
--- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/PersonRepository.java
+++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/PersonRepository.java
@@ -63,10 +63,10 @@ public interface PersonRepository extends GraphRepository, NamedIndexRep
@Query("start person=node({p_person}) match (boss)-[:boss]->(person) return boss")
Person findBoss(@Param("p_person") Long person);
- @Query("start boss=node({0}) match (boss)-[:boss]->(person) return person order by count(*)")
+ @Query("start boss=node({0}) match (boss)-[:boss]->(person) with person, count(*) as cnt order by cnt return person")
Page findSubordinates(Person boss,Pageable page);
- @Query(value = "start boss=node({0}) match (boss)-[:boss]->(person) return person order by count(*)",countQuery = "start boss=node({0}) match (boss)-[:boss]->(person) with person return count(*)")
+ @Query(value = "start boss=node({0}) match (boss)-[:boss]->(person) with person, count(*) as cnt order by cnt return person",countQuery = "start boss=node({0}) match (boss)-[:boss]->(person) with person return count(*)")
Page findSubordinatesWithCount(Person boss,Pageable page);
Group findTeam(@Param("p_person") Person person);
diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/query/CypherQueryBuilderUnitTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/query/CypherQueryBuilderUnitTests.java
index b9d9e36cb..55af7ba9f 100644
--- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/query/CypherQueryBuilderUnitTests.java
+++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/query/CypherQueryBuilderUnitTests.java
@@ -126,7 +126,7 @@ public class CypherQueryBuilderUnitTests {
@Test
public void createsSimpleTraversalClauseCorrectly() {
query.addRestriction(new Part("group", Person.class));
- assertThat(query.toString(), is("START `person_group`=node({0}) MATCH `person`<-[:`members`]-`person_group` WHERE `person`.__type__! IN ['Person'] RETURN `person`"));
+ assertThat(query.toString(), is("START `person_group`=node({0}) MATCH `person`<-[:`members`]-`person_group` WHERE (has(`person`.__type__) AND `person`.__type__ IN ['Person']) RETURN `person`"));
}
@Test
@@ -168,13 +168,13 @@ public class CypherQueryBuilderUnitTests {
public void shouldFindByNodeEntity() throws Exception {
query.addRestriction(new Part("pet", Person.class));
- assertThat(query.toString(), is("START `person_pet`=node({0}) MATCH `person`-[:`owns`]->`person_pet` WHERE `person`.__type__! IN ['Person'] RETURN `person`"));
+ assertThat(query.toString(), is("START `person_pet`=node({0}) MATCH `person`-[:`owns`]->`person_pet` WHERE (has(`person`.__type__) AND `person`.__type__ IN ['Person']) RETURN `person`"));
}
@Test
public void shouldFindByNodeEntityForIncomingRelationship() {
query.addRestriction(new Part("group", Person.class));
- assertThat(query.toString(), is("START `person_group`=node({0}) MATCH `person`<-[:`members`]-`person_group` WHERE `person`.__type__! IN ['Person'] RETURN `person`"));
+ assertThat(query.toString(), is("START `person_group`=node({0}) MATCH `person`<-[:`members`]-`person_group` WHERE (has(`person`.__type__) AND `person`.__type__ IN ['Person']) RETURN `person`"));
}
}
diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/query/DerivedFinderMethodTest.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/query/DerivedFinderMethodTest.java
index bcedf6ed4..4b47347db 100644
--- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/query/DerivedFinderMethodTest.java
+++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/query/DerivedFinderMethodTest.java
@@ -111,7 +111,7 @@ public class DerivedFinderMethodTest {
@Test
public void testQueryWithEntityGraphId() throws Exception {
assertRepositoryQueryMethod(ThingRepository.class, "findByOwnerId",new Object[]{123},
- "START `thing_owner`=node({0}) MATCH `thing`-[:`owner`]->`thing_owner` WHERE `thing`.__type__! IN ['org.springframework.data.neo4j.repository.query.DerivedFinderMethodTest$Thing'] ",
+ "START `thing_owner`=node({0}) MATCH `thing`-[:`owner`]->`thing_owner` WHERE (has(`thing`.__type__) AND `thing`.__type__ IN ['org.springframework.data.neo4j.repository.query.DerivedFinderMethodTest$Thing']) ",
123);
}
diff --git a/src/docbkx/tutorial/neo4j.xml b/src/docbkx/tutorial/neo4j.xml
index bbbcb44f0..d69aadbb3 100644
--- a/src/docbkx/tutorial/neo4j.xml
+++ b/src/docbkx/tutorial/neo4j.xml
@@ -40,7 +40,7 @@
org.neo4j
neo4j
- 1.8
+ 1.8.1
]]>