Skip to content

Commit 5705b95

Browse files
authored
fixGH-215): Cannot query set of enums within select clause (#218)
* fixGH-215): Cannot query set of enums within select clause * fix: removed reduntant GraphQLJpaOneToManyDataFetcher class * polish: removed \n characters
1 parent 6e204fc commit 5705b95

File tree

4 files changed

+252
-239
lines changed

4 files changed

+252
-239
lines changed

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

Lines changed: 0 additions & 202 deletions
This file was deleted.

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

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -770,14 +770,6 @@ else if (attribute instanceof PluralAttribute
770770

771771
// make it configurable via builder api
772772
arguments.add(optionalArgument(toManyDefaultOptional));
773-
774-
if (attribute.getPersistentAttributeType() == Attribute.PersistentAttributeType.MANY_TO_MANY) {
775-
dataFetcher = new GraphQLJpaOneToManyDataFetcher(entityManager,
776-
baseEntity,
777-
toManyDefaultOptional,
778-
isDefaultDistinct,
779-
(PluralAttribute) attribute);
780-
}
781773
}
782774

783775
return GraphQLFieldDefinition.newFieldDefinition()

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

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -730,24 +730,32 @@ else if(Collection.class.isAssignableFrom(type)) {
730730
// collection join for plural attributes
731731
if(PluralAttribute.class.isInstance(from.getModel())
732732
|| EntityType.class.isInstance(from.getModel())) {
733-
From<?,?> join = null;
733+
Predicate predicate;
734734

735-
for(Join<?,?> fetch: from.getJoins()) {
736-
if(fetch.getAttribute().getName().equals(filter.getField()))
737-
join = (From<?,?>) fetch;
735+
if(EntityType.class.isInstance(from.getModel())) {
736+
From<?,?> join = null;
737+
738+
for(Join<?,?> fetch: from.getJoins()) {
739+
if(fetch.getAttribute().getName().equals(filter.getField()))
740+
join = (From<?,?>) fetch;
741+
}
742+
743+
if(join == null) {
744+
join = (From<?,?>) from.join(filter.getField());
745+
}
746+
747+
predicate = join.in(value);
748+
} else {
749+
Expression<? extends Collection<Object>> expression = from.get(filter.getField());
750+
751+
predicate = cb.isMember(filter.getValue(), expression);
738752
}
739-
740-
if(join == null) {
741-
join = (From<?,?>) from.join(filter.getField());
753+
754+
if(filter.anyMatch(Criteria.NIN, Criteria.NE)) {
755+
return cb.not(predicate);
742756
}
743-
744-
745-
Predicate in = join.in(value);
746-
747-
if(filter.getCriterias().contains(PredicateFilter.Criteria.NIN))
748-
return cb.not(in);
749757

750-
return in;
758+
return predicate;
751759
}
752760
} else if(type.isEnum()) {
753761
return getEnumPredicate((Path<Enum<?>>) field, predicateFilter);

0 commit comments

Comments
 (0)