diff --git a/graphql-jpa-query-schema/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/GraphQLJpaQueryFactory.java b/graphql-jpa-query-schema/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/GraphQLJpaQueryFactory.java index a5220a99d..31e288558 100644 --- a/graphql-jpa-query-schema/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/GraphQLJpaQueryFactory.java +++ b/graphql-jpa-query-schema/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/GraphQLJpaQueryFactory.java @@ -227,8 +227,8 @@ protected Stream getResultStream(TypedQuery query, } // Let's execute query and get wrap result into stream - return query.getResultStream() - .peek(entityManager::detach); + return query.getResultList() + .stream(); } protected Object querySingleResult(final DataFetchingEnvironment environment) { diff --git a/graphql-jpa-query-schema/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/GraphQLJpaToOneDataFetcher.java b/graphql-jpa-query-schema/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/GraphQLJpaToOneDataFetcher.java index ded77cbc6..08e197f2b 100644 --- a/graphql-jpa-query-schema/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/GraphQLJpaToOneDataFetcher.java +++ b/graphql-jpa-query-schema/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/GraphQLJpaToOneDataFetcher.java @@ -16,9 +16,10 @@ package com.introproventures.graphql.jpa.query.schema.impl; +import static javax.persistence.metamodel.Attribute.PersistentAttributeType.EMBEDDED; + import java.util.Optional; -import javax.persistence.metamodel.Attribute.PersistentAttributeType; import javax.persistence.metamodel.SingularAttribute; import org.dataloader.DataLoader; @@ -27,6 +28,7 @@ import org.dataloader.MappedBatchLoaderWithContext; import graphql.GraphQLContext; +import graphql.language.Argument; import graphql.language.Field; import graphql.schema.DataFetcher; import graphql.schema.DataFetchingEnvironment; @@ -55,11 +57,12 @@ public Object get(DataFetchingEnvironment environment) { GraphQLType parentType = environment.getParentType(); Object source = environment.getSource(); + Optional whereArgument = queryFactory.getArgument(field, "where"); Boolean isOptional = queryFactory.getOptionalArgumentValue(environment, field, attribute); // Resolve collection query if where argument is present - if (isOptional && !PersistentAttributeType.EMBEDDED.equals(attribute.getPersistentAttributeType())) { + if ((whereArgument.isPresent() && isOptional) && !EMBEDDED.equals(attribute.getPersistentAttributeType())) { Object parentIdValue = queryFactory.getParentIdAttributeValue(source); String dataLoaderKey = parentType.getName() + "." + Optional.ofNullable(field.getAlias()) .orElseGet(attribute::getName);