Skip to content

Commit dcb037b

Browse files
authored
fix: Let's pass and apply distinct in query results if enabled (#124)
1 parent 20ad369 commit dcb037b

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

graphql-jpa-query-schema/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/GraphQLJpaQueryDataFetcher.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,11 @@ public Object get(DataFetchingEnvironment environment) {
131131
query.setHint(ORG_HIBERNATE_READ_ONLY, true);
132132
query.setHint(ORG_HIBERNATE_FETCH_SIZE, 1000);
133133
query.setHint(ORG_HIBERNATE_CACHEABLE, false);
134-
query.setHint(HIBERNATE_QUERY_PASS_DISTINCT_THROUGH, false);
134+
135+
// Let's pass distinct if enabled
136+
if(isDistinct) {
137+
query.setHint(HIBERNATE_QUERY_PASS_DISTINCT_THROUGH, true);
138+
}
135139

136140
result.put(GraphQLJpaSchemaBuilder.QUERY_SELECT_PARAM_NAME, query.getResultList());
137141
}

graphql-jpa-query-schema/src/test/java/com/introproventures/graphql/jpa/query/schema/StarwarsQueryExecutorTests.java

+29
Original file line numberDiff line numberDiff line change
@@ -1208,5 +1208,34 @@ public void queryWithNestedWhereCompoundSearchCriteriaShouldFetchElementCollecti
12081208
assertThat(result.toString()).isEqualTo(expected);
12091209
}
12101210

1211+
1212+
@Test
1213+
public void queryShouldReturnDistictResultsByDefault() {
1214+
//given:
1215+
String query = "query { " +
1216+
" Humans (where: { " +
1217+
" appearsIn: {IN: [A_NEW_HOPE, EMPIRE_STRIKES_BACK]}" +
1218+
" }) {" +
1219+
" select {" +
1220+
" id" +
1221+
" name" +
1222+
" }" +
1223+
" }" +
1224+
"}";
1225+
1226+
String expected = "{Humans={select=["
1227+
+ "{id=1000, name=Luke Skywalker}, "
1228+
+ "{id=1001, name=Darth Vader}, "
1229+
+ "{id=1002, name=Han Solo}, "
1230+
+ "{id=1003, name=Leia Organa}, "
1231+
+ "{id=1004, name=Wilhuff Tarkin}"
1232+
+ "]}}";
1233+
1234+
//when:
1235+
Object result = executor.execute(query).getData();
1236+
1237+
//then:
1238+
assertThat(result.toString()).isEqualTo(expected);
1239+
}
12111240

12121241
}

0 commit comments

Comments
 (0)