diff --git a/graphql-jpa-query-schema/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/GraphQLJpaQueryDataFetcher.java b/graphql-jpa-query-schema/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/GraphQLJpaQueryDataFetcher.java index b1a8c2dfb..9308a52f7 100644 --- a/graphql-jpa-query-schema/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/GraphQLJpaQueryDataFetcher.java +++ b/graphql-jpa-query-schema/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/GraphQLJpaQueryDataFetcher.java @@ -131,7 +131,11 @@ public Object get(DataFetchingEnvironment environment) { query.setHint(ORG_HIBERNATE_READ_ONLY, true); query.setHint(ORG_HIBERNATE_FETCH_SIZE, 1000); query.setHint(ORG_HIBERNATE_CACHEABLE, false); - query.setHint(HIBERNATE_QUERY_PASS_DISTINCT_THROUGH, false); + + // Let's pass distinct if enabled + if(isDistinct) { + query.setHint(HIBERNATE_QUERY_PASS_DISTINCT_THROUGH, true); + } result.put(GraphQLJpaSchemaBuilder.QUERY_SELECT_PARAM_NAME, query.getResultList()); } diff --git a/graphql-jpa-query-schema/src/test/java/com/introproventures/graphql/jpa/query/schema/StarwarsQueryExecutorTests.java b/graphql-jpa-query-schema/src/test/java/com/introproventures/graphql/jpa/query/schema/StarwarsQueryExecutorTests.java index 8a2e7c86c..9c0518f53 100644 --- a/graphql-jpa-query-schema/src/test/java/com/introproventures/graphql/jpa/query/schema/StarwarsQueryExecutorTests.java +++ b/graphql-jpa-query-schema/src/test/java/com/introproventures/graphql/jpa/query/schema/StarwarsQueryExecutorTests.java @@ -1208,5 +1208,34 @@ public void queryWithNestedWhereCompoundSearchCriteriaShouldFetchElementCollecti assertThat(result.toString()).isEqualTo(expected); } + + @Test + public void queryShouldReturnDistictResultsByDefault() { + //given: + String query = "query { " + + " Humans (where: { " + + " appearsIn: {IN: [A_NEW_HOPE, EMPIRE_STRIKES_BACK]}" + + " }) {" + + " select {" + + " id" + + " name" + + " }" + + " }" + + "}"; + + String expected = "{Humans={select=[" + + "{id=1000, name=Luke Skywalker}, " + + "{id=1001, name=Darth Vader}, " + + "{id=1002, name=Han Solo}, " + + "{id=1003, name=Leia Organa}, " + + "{id=1004, name=Wilhuff Tarkin}" + + "]}}"; + + //when: + Object result = executor.execute(query).getData(); + + //then: + assertThat(result.toString()).isEqualTo(expected); + } }