diff --git a/pom.xml b/pom.xml
index c77686453f..692183f4c1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
org.springframework.data
spring-data-jpa-parent
- 3.1.0-SNAPSHOT
+ 3.1.0-gh-2348-SNAPSHOT
pom
Spring Data JPA Parent
diff --git a/spring-data-envers/pom.xml b/spring-data-envers/pom.xml
index db915d7c3b..449f0a05f3 100755
--- a/spring-data-envers/pom.xml
+++ b/spring-data-envers/pom.xml
@@ -5,12 +5,12 @@
org.springframework.data
spring-data-envers
- 3.1.0-SNAPSHOT
+ 3.1.0-gh-2348-SNAPSHOT
org.springframework.data
spring-data-jpa-parent
- 3.1.0-SNAPSHOT
+ 3.1.0-gh-2348-SNAPSHOT
../pom.xml
diff --git a/spring-data-jpa-distribution/pom.xml b/spring-data-jpa-distribution/pom.xml
index a5cb2f09b5..62a1fe834a 100644
--- a/spring-data-jpa-distribution/pom.xml
+++ b/spring-data-jpa-distribution/pom.xml
@@ -14,7 +14,7 @@
org.springframework.data
spring-data-jpa-parent
- 3.1.0-SNAPSHOT
+ 3.1.0-gh-2348-SNAPSHOT
../pom.xml
diff --git a/spring-data-jpa/pom.xml b/spring-data-jpa/pom.xml
index 27313e9e3c..1d3df56cf0 100644
--- a/spring-data-jpa/pom.xml
+++ b/spring-data-jpa/pom.xml
@@ -6,7 +6,7 @@
org.springframework.data
spring-data-jpa
- 3.1.0-SNAPSHOT
+ 3.1.0-gh-2348-SNAPSHOT
Spring Data JPA
Spring Data module for JPA repositories.
@@ -15,7 +15,7 @@
org.springframework.data
spring-data-jpa-parent
- 3.1.0-SNAPSHOT
+ 3.1.0-gh-2348-SNAPSHOT
../pom.xml
diff --git a/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/HqlQueryTransformer.java b/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/HqlQueryTransformer.java
index dbb0f91558..9939f4d0c3 100644
--- a/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/HqlQueryTransformer.java
+++ b/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/HqlQueryTransformer.java
@@ -265,6 +265,29 @@ public List visitFromRoot(HqlParser.FromRootContext ctx) {
return tokens;
}
+ @Override
+ public List visitJoin(HqlParser.JoinContext ctx) {
+
+ List tokens = new ArrayList<>();
+
+ tokens.addAll(visit(ctx.joinType()));
+ tokens.add(new JpaQueryParsingToken(ctx.JOIN()));
+
+ if (!countQuery) {
+ if (ctx.FETCH() != null) {
+ tokens.add(new JpaQueryParsingToken(ctx.FETCH()));
+ }
+ }
+
+ tokens.addAll(visit(ctx.joinTarget()));
+
+ if (ctx.joinRestriction() != null) {
+ tokens.addAll(visit(ctx.joinRestriction()));
+ }
+
+ return tokens;
+ }
+
@Override
public List visitAlias(HqlParser.AliasContext ctx) {
diff --git a/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/HqlQueryTransformerTests.java b/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/HqlQueryTransformerTests.java
index d6050091df..9fc6b5ebbf 100644
--- a/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/HqlQueryTransformerTests.java
+++ b/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/HqlQueryTransformerTests.java
@@ -793,6 +793,16 @@ void sortProperlyAppendsToExistingOrderByWithFunction() {
"select e from SampleEntity e where function('nativeFunc', ?1) > 'testVal' order by function('nativeFunc', ?1), e.age desc");
}
+ @Test // GH-2348
+ void removeFetchFromJoinsDuringCountQueryCreation() {
+
+ assertCountQuery("select u from User u left outer join fetch u.roles r left outer JOIN FETCH u.accounts a",
+ "select count(u) from User u left outer join u.roles r left outer JOIN u.accounts a");
+
+ assertCountQuery("SELECT DISTINCT b FROM Board b LEFT JOIN FETCH b.comments ORDER BY b.id",
+ "SELECT count(DISTINCT b) FROM Board b LEFT JOIN b.comments");
+ }
+
private void assertCountQuery(String originalQuery, String countQuery) {
assertThat(createCountQueryFor(originalQuery)).isEqualTo(countQuery);
}