From ee57b696b9ea699ba700cf08f7dba93fb1e1b8c8 Mon Sep 17 00:00:00 2001
From: Igor Dianov <igdianov@users.noreply.github.com>
Date: Sun, 26 Nov 2023 21:01:43 -0800
Subject: [PATCH 1/5] Fix incorrect query intermittent results due to result
 list proxies (#379)

* Fix incorrect query intermittent results due to result list proxies

* remove legacy batch loader registry context

* make query result list streams and batch loaders thread safe

* Remove transactional from GraphQLController

* Auto-configure shared entity manager for graphql schema builder instance
---
 .github/workflows/build.yml                   |   4 +-
 graphql-jpa-query-autoconfigure/pom.xml       |   4 +
 ...ueryGraphQlExecutionAutoConfiguration.java |  22 ---
 ...GraphQLSchemaBuilderAutoConfiguration.java |   7 +-
 .../GraphQLSchemaAutoConfigurationTest.java   |  50 +++----
 ...eryGraphQlSourceAutoConfigurationTest.java |  15 +-
 graphql-jpa-query-build/pom.xml               |   2 +-
 .../jpa/query/example/Application.java        |  28 ++--
 .../schema/impl/GraphQLJpaQueryFactory.java   | 139 ++++++++++--------
 .../impl/GraphQLJpaToManyDataFetcher.java     |  20 +--
 .../GraphQLJpaToManyMappedBatchLoader.java    |   6 +-
 .../impl/GraphQLJpaToOneDataFetcher.java      |  18 +--
 .../GraphQLJpaToOneMappedBatchLoader.java     |   6 +-
 .../converter/GraphQLJpaConverterTests.java   |  53 +++++--
 .../StarwarsQueryExecutorTestsSupport.java    |  17 ++-
 .../jpa/query/web/GraphQLController.java      |  19 +--
 16 files changed, 206 insertions(+), 204 deletions(-)

diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 732d35fe0..97b06373b 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -3,11 +3,11 @@ name: CI
 on:
   workflow_dispatch:
   push:
-    branches: [ "master" ]
+    branches: [ "0.5.x" ]
     paths-ignore:
       - '**/README.md'  
   pull_request:
-    branches: [ "master" ]
+    branches: [ "0.5.x" ]
     paths-ignore:
       - '**/README.md'  
 
diff --git a/graphql-jpa-query-autoconfigure/pom.xml b/graphql-jpa-query-autoconfigure/pom.xml
index 556a80a9c..dee10d1d3 100644
--- a/graphql-jpa-query-autoconfigure/pom.xml
+++ b/graphql-jpa-query-autoconfigure/pom.xml
@@ -32,6 +32,10 @@
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-autoconfigure</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-orm</artifactId>
+    </dependency>
     <dependency>
       <groupId>javax.validation</groupId>
       <artifactId>validation-api</artifactId>    
diff --git a/graphql-jpa-query-autoconfigure/src/main/java/com/introproventures/graphql/jpa/query/autoconfigure/GraphQLJpaQueryGraphQlExecutionAutoConfiguration.java b/graphql-jpa-query-autoconfigure/src/main/java/com/introproventures/graphql/jpa/query/autoconfigure/GraphQLJpaQueryGraphQlExecutionAutoConfiguration.java
index 9a346518d..8838bd65c 100644
--- a/graphql-jpa-query-autoconfigure/src/main/java/com/introproventures/graphql/jpa/query/autoconfigure/GraphQLJpaQueryGraphQlExecutionAutoConfiguration.java
+++ b/graphql-jpa-query-autoconfigure/src/main/java/com/introproventures/graphql/jpa/query/autoconfigure/GraphQLJpaQueryGraphQlExecutionAutoConfiguration.java
@@ -1,9 +1,6 @@
 package com.introproventures.graphql.jpa.query.autoconfigure;
 
 import graphql.GraphQL;
-import org.dataloader.DataLoaderOptions;
-import org.dataloader.MappedBatchLoaderWithContext;
-import org.springframework.beans.factory.InitializingBean;
 import org.springframework.beans.factory.ListableBeanFactory;
 import org.springframework.boot.autoconfigure.AutoConfiguration;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
@@ -13,9 +10,6 @@
 import org.springframework.graphql.ExecutionGraphQlService;
 import org.springframework.graphql.execution.BatchLoaderRegistry;
 import org.springframework.graphql.execution.GraphQlSource;
-import reactor.core.publisher.Mono;
-
-import static com.introproventures.graphql.jpa.query.schema.impl.BatchLoaderRegistry.newDataLoaderRegistry;
 
 @AutoConfiguration(after = GraphQlAutoConfiguration.class)
 @ConditionalOnClass({GraphQL.class, GraphQlSource.class})
@@ -35,20 +29,4 @@ ExecutionGraphQlService executionGraphQlService(ListableBeanFactory beanFactory,
         return new GraphQlAutoConfiguration(beanFactory).executionGraphQlService(graphQlSource,
                                                                                  batchLoaderRegistry);
     }
-
-    @Bean
-    InitializingBean batchLoaderRegistryConfigurer(BatchLoaderRegistry batchLoaderRegistry) {
-        return () -> {
-            DataLoaderOptions options = DataLoaderOptions.newOptions()
-                                                         .setCachingEnabled(false);
-            newDataLoaderRegistry(options)
-                               .getDataLoadersMap()
-                               .entrySet()
-                               .stream()
-                               .forEach(entry -> batchLoaderRegistry.forName(entry.getKey())
-                                                                    .withOptions(options)
-                                                                    .registerMappedBatchLoader((keys, env) ->
-                                                                           Mono.fromCompletionStage(((MappedBatchLoaderWithContext) entry.getValue()).load(keys, env))));
-        };
-    }
 }
diff --git a/graphql-jpa-query-autoconfigure/src/main/java/com/introproventures/graphql/jpa/query/autoconfigure/GraphQLSchemaBuilderAutoConfiguration.java b/graphql-jpa-query-autoconfigure/src/main/java/com/introproventures/graphql/jpa/query/autoconfigure/GraphQLSchemaBuilderAutoConfiguration.java
index 6e405afcd..64529a90a 100644
--- a/graphql-jpa-query-autoconfigure/src/main/java/com/introproventures/graphql/jpa/query/autoconfigure/GraphQLSchemaBuilderAutoConfiguration.java
+++ b/graphql-jpa-query-autoconfigure/src/main/java/com/introproventures/graphql/jpa/query/autoconfigure/GraphQLSchemaBuilderAutoConfiguration.java
@@ -1,10 +1,11 @@
 package com.introproventures.graphql.jpa.query.autoconfigure;
 
-import javax.persistence.EntityManagerFactory;
 import com.introproventures.graphql.jpa.query.schema.GraphQLSchemaBuilder;
 import com.introproventures.graphql.jpa.query.schema.RestrictedKeysProvider;
 import com.introproventures.graphql.jpa.query.schema.impl.GraphQLJpaSchemaBuilder;
 import graphql.GraphQL;
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
 import org.springframework.beans.factory.ObjectProvider;
 import org.springframework.boot.autoconfigure.AutoConfiguration;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
@@ -13,6 +14,7 @@
 import org.springframework.boot.autoconfigure.condition.ConditionalOnSingleCandidate;
 import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
 import org.springframework.context.annotation.Bean;
+import org.springframework.orm.jpa.SharedEntityManagerCreator;
 
 @AutoConfiguration(
         before = {GraphQLSchemaAutoConfiguration.class, GraphQLJpaQueryGraphQlSourceAutoConfiguration.class},
@@ -28,7 +30,8 @@ public class GraphQLSchemaBuilderAutoConfiguration {
     GraphQLJpaSchemaBuilder defaultGraphQLJpaSchemaBuilder(EntityManagerFactory entityManagerFactory,
                                                            GraphQLJpaQueryProperties properties,
                                                            ObjectProvider<RestrictedKeysProvider> restrictedKeysProvider) {
-        GraphQLJpaSchemaBuilder builder = new GraphQLJpaSchemaBuilder(entityManagerFactory.createEntityManager());
+        EntityManager entityManager = SharedEntityManagerCreator.createSharedEntityManager(entityManagerFactory);
+        GraphQLJpaSchemaBuilder builder = new GraphQLJpaSchemaBuilder(entityManager);
 
         builder.name(properties.getName())
                .description(properties.getDescription())
diff --git a/graphql-jpa-query-autoconfigure/src/test/java/com/introproventures/graphql/jpa/query/autoconfigure/GraphQLSchemaAutoConfigurationTest.java b/graphql-jpa-query-autoconfigure/src/test/java/com/introproventures/graphql/jpa/query/autoconfigure/GraphQLSchemaAutoConfigurationTest.java
index 4efcee2a2..5a55c74a9 100644
--- a/graphql-jpa-query-autoconfigure/src/test/java/com/introproventures/graphql/jpa/query/autoconfigure/GraphQLSchemaAutoConfigurationTest.java
+++ b/graphql-jpa-query-autoconfigure/src/test/java/com/introproventures/graphql/jpa/query/autoconfigure/GraphQLSchemaAutoConfigurationTest.java
@@ -1,17 +1,15 @@
 package com.introproventures.graphql.jpa.query.autoconfigure;
 
-import java.io.File;
-import java.io.IOException;
-import java.time.Duration;
-import java.time.Instant;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.UUID;
-import java.util.function.Supplier;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
+import static graphql.annotations.AnnotationsSchemaCreator.newAnnotationsSchema;
+import static graphql.schema.FieldCoordinates.coordinates;
+import static graphql.schema.GraphQLCodeRegistry.newCodeRegistry;
+import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition;
+import static graphql.schema.GraphQLObjectType.newObject;
+import static graphql.schema.GraphQLSchema.newSchema;
+import static graphql.schema.idl.RuntimeWiring.newRuntimeWiring;
+import static java.util.Collections.emptyMap;
+import static org.assertj.core.api.Assertions.assertThat;
+
 import com.introproventures.graphql.jpa.query.autoconfigure.support.AdditionalGraphQLType;
 import com.introproventures.graphql.jpa.query.autoconfigure.support.MutationRoot;
 import com.introproventures.graphql.jpa.query.autoconfigure.support.QueryRoot;
@@ -41,6 +39,18 @@
 import graphql.schema.idl.SchemaGenerator;
 import graphql.schema.idl.SchemaParser;
 import graphql.schema.idl.TypeDefinitionRegistry;
+import java.io.File;
+import java.io.IOException;
+import java.time.Duration;
+import java.time.Instant;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.UUID;
+import java.util.function.Supplier;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.reactivestreams.Publisher;
@@ -58,16 +68,6 @@
 import reactor.core.publisher.Flux;
 import reactor.test.StepVerifier;
 
-import static graphql.annotations.AnnotationsSchemaCreator.newAnnotationsSchema;
-import static graphql.schema.FieldCoordinates.coordinates;
-import static graphql.schema.GraphQLCodeRegistry.newCodeRegistry;
-import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition;
-import static graphql.schema.GraphQLObjectType.newObject;
-import static graphql.schema.GraphQLSchema.newSchema;
-import static graphql.schema.idl.RuntimeWiring.newRuntimeWiring;
-import static java.util.Collections.emptyMap;
-import static org.assertj.core.api.Assertions.assertThat;
-
 @RunWith(SpringRunner.class)
 @SpringBootTest(webEnvironment=WebEnvironment.NONE)
 public class GraphQLSchemaAutoConfigurationTest {
@@ -77,11 +77,11 @@ public class GraphQLSchemaAutoConfigurationTest {
 
     @Autowired
     private GraphQLJpaQueryProperties graphQLJpaQueryProperties;
-    
+
     @SpringBootApplication
     @EnableGraphQLJpaQuerySchema(basePackageClasses = TestEntity.class)
     static class Application {
-        
+
         @Configuration
         static class GraphQLAnnotationsSchemaConfigurer implements GraphQLSchemaConfigurer {
             @Autowired(required = false)
@@ -383,6 +383,4 @@ public void defaultConfigurationProperties() {
         assertThat(graphQLJpaQueryProperties.isUseDistinctParameter()).isFalse();
         assertThat(graphQLJpaQueryProperties.isToManyDefaultOptional()).isTrue();
     }
-        
-
 }
diff --git a/graphql-jpa-query-boot-starter-graphql/src/test/java/com/introproventures/graphql/jpa/query/boot/test/boot/autoconfigure/GraphQLJpaQueryGraphQlSourceAutoConfigurationTest.java b/graphql-jpa-query-boot-starter-graphql/src/test/java/com/introproventures/graphql/jpa/query/boot/test/boot/autoconfigure/GraphQLJpaQueryGraphQlSourceAutoConfigurationTest.java
index db5a86591..5c49cf386 100644
--- a/graphql-jpa-query-boot-starter-graphql/src/test/java/com/introproventures/graphql/jpa/query/boot/test/boot/autoconfigure/GraphQLJpaQueryGraphQlSourceAutoConfigurationTest.java
+++ b/graphql-jpa-query-boot-starter-graphql/src/test/java/com/introproventures/graphql/jpa/query/boot/test/boot/autoconfigure/GraphQLJpaQueryGraphQlSourceAutoConfigurationTest.java
@@ -15,6 +15,8 @@
  */
 package com.introproventures.graphql.jpa.query.boot.test.boot.autoconfigure;
 
+import static org.assertj.core.api.Assertions.assertThat;
+
 import com.introproventures.graphql.jpa.query.autoconfigure.EnableGraphQLJpaQuerySchema;
 import com.introproventures.graphql.jpa.query.autoconfigure.JavaScalarsRuntimeWiringConfigurer;
 import com.introproventures.graphql.jpa.query.boot.test.starter.model.Author;
@@ -22,7 +24,6 @@
 import com.introproventures.graphql.jpa.query.schema.impl.GraphQLJpaSchemaBuilder;
 import graphql.schema.GraphQLObjectType;
 import graphql.schema.GraphQLSchema;
-import org.dataloader.DataLoaderRegistry;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -35,10 +36,6 @@
 import org.springframework.graphql.execution.RuntimeWiringConfigurer;
 import org.springframework.test.context.junit4.SpringRunner;
 
-import static graphql.GraphQLContext.newContext;
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.dataloader.DataLoaderRegistry.newRegistry;
-
 @RunWith(SpringRunner.class)
 @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
 public class GraphQLJpaQueryGraphQlSourceAutoConfigurationTest {
@@ -81,11 +78,5 @@ public void contextIsAutoConfigured() {
                                 .extracting(GraphQLObjectType::getName, GraphQLObjectType::getDescription)
                                 .containsExactly("GraphQLBooks", "GraphQL Books Schema Description");
 
-        DataLoaderRegistry dataLoaderRegistry = newRegistry().build();
-        batchLoaderRegistry.registerDataLoaders(dataLoaderRegistry, newContext().build());
-
-        assertThat(dataLoaderRegistry.getDataLoadersMap())
-                                     .isNotEmpty()
-                                     .containsOnlyKeys("Author.books", "Book.author");
     }
-}
\ No newline at end of file
+}
diff --git a/graphql-jpa-query-build/pom.xml b/graphql-jpa-query-build/pom.xml
index b4f1ee455..6e92ead93 100644
--- a/graphql-jpa-query-build/pom.xml
+++ b/graphql-jpa-query-build/pom.xml
@@ -20,7 +20,7 @@
     <repository>
       <id>spring-milestones</id>
       <name>Spring Milestones</name>
-      <url>http://repo.spring.io/milestone</url>
+      <url>https://repo.spring.io/milestone</url>
       <releases>
         <enabled>true</enabled>
       </releases>
diff --git a/graphql-jpa-query-example-merge/src/main/java/com/introproventures/graphql/jpa/query/example/Application.java b/graphql-jpa-query-example-merge/src/main/java/com/introproventures/graphql/jpa/query/example/Application.java
index 17a110eb0..a07c8a8f3 100644
--- a/graphql-jpa-query-example-merge/src/main/java/com/introproventures/graphql/jpa/query/example/Application.java
+++ b/graphql-jpa-query-example-merge/src/main/java/com/introproventures/graphql/jpa/query/example/Application.java
@@ -17,25 +17,25 @@
 
 import static graphql.schema.visibility.DefaultGraphqlFieldVisibility.DEFAULT_FIELD_VISIBILITY;
 
+import graphql.GraphQLContext;
+import graphql.execution.instrumentation.Instrumentation;
+import graphql.execution.instrumentation.SimpleInstrumentation;
+import graphql.execution.instrumentation.tracing.TracingInstrumentation;
+import graphql.schema.visibility.BlockedFields;
+import graphql.schema.visibility.GraphqlFieldVisibility;
 import java.util.function.Supplier;
-
 import javax.servlet.http.HttpServletRequest;
-
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Primary;
+import org.springframework.data.transaction.ChainedTransactionManager;
+import org.springframework.transaction.PlatformTransactionManager;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
 import org.springframework.web.context.annotation.RequestScope;
 
-import graphql.GraphQLContext;
-import graphql.execution.instrumentation.Instrumentation;
-import graphql.execution.instrumentation.SimpleInstrumentation;
-import graphql.execution.instrumentation.tracing.TracingInstrumentation;
-import graphql.schema.visibility.BlockedFields;
-import graphql.schema.visibility.GraphqlFieldVisibility;
-
 /**
  * GraphQL JPA Query Example with Spring Boot Autoconfiguration
  * 
@@ -79,5 +79,13 @@ public Supplier<Instrumentation> instrumentation(HttpServletRequest request) {
                            ? new TracingInstrumentation() 
                            : SimpleInstrumentation.INSTANCE;
     }
-    
+
+
+    @Primary
+    PlatformTransactionManager transactionManager(
+        PlatformTransactionManager bookTransactionManager,
+        PlatformTransactionManager starWarsTransactionManager
+    ) {
+        return new ChainedTransactionManager(bookTransactionManager, starWarsTransactionManager);
+    }
 }
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 dbb62b88c..ab616e3a1 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
@@ -15,6 +15,53 @@
  */
 package com.introproventures.graphql.jpa.query.schema.impl;
 
+import static com.introproventures.graphql.jpa.query.schema.impl.GraphQLJpaSchemaBuilder.SELECT_DISTINCT_PARAM_NAME;
+import static com.introproventures.graphql.jpa.query.support.GraphQLSupport.getObjectField;
+import static com.introproventures.graphql.jpa.query.support.GraphQLSupport.isAfterArgument;
+import static com.introproventures.graphql.jpa.query.support.GraphQLSupport.isDistinctArgument;
+import static com.introproventures.graphql.jpa.query.support.GraphQLSupport.isFirstArgument;
+import static com.introproventures.graphql.jpa.query.support.GraphQLSupport.isLogicalArgument;
+import static com.introproventures.graphql.jpa.query.support.GraphQLSupport.isPageArgument;
+import static com.introproventures.graphql.jpa.query.support.GraphQLSupport.isWhereArgument;
+import static graphql.introspection.Introspection.SchemaMetaFieldDef;
+import static graphql.introspection.Introspection.TypeMetaFieldDef;
+import static graphql.introspection.Introspection.TypeNameMetaFieldDef;
+import static java.util.stream.Collectors.groupingBy;
+
+import com.introproventures.graphql.jpa.query.annotation.GraphQLDefaultOrderBy;
+import com.introproventures.graphql.jpa.query.introspection.ReflectionUtil;
+import com.introproventures.graphql.jpa.query.schema.JavaScalars;
+import com.introproventures.graphql.jpa.query.schema.RestrictedKeysProvider;
+import com.introproventures.graphql.jpa.query.schema.impl.EntityIntrospector.EntityIntrospectionResult;
+import com.introproventures.graphql.jpa.query.schema.impl.EntityIntrospector.EntityIntrospectionResult.AttributePropertyDescriptor;
+import com.introproventures.graphql.jpa.query.schema.impl.PredicateFilter.Criteria;
+import com.introproventures.graphql.jpa.query.support.GraphQLSupport;
+import graphql.GraphQLException;
+import graphql.execution.CoercedVariables;
+import graphql.execution.MergedField;
+import graphql.execution.ValuesResolver;
+import graphql.language.Argument;
+import graphql.language.ArrayValue;
+import graphql.language.BooleanValue;
+import graphql.language.EnumValue;
+import graphql.language.Field;
+import graphql.language.FloatValue;
+import graphql.language.IntValue;
+import graphql.language.NullValue;
+import graphql.language.ObjectField;
+import graphql.language.ObjectValue;
+import graphql.language.SelectionSet;
+import graphql.language.StringValue;
+import graphql.language.Value;
+import graphql.language.VariableReference;
+import graphql.schema.DataFetchingEnvironment;
+import graphql.schema.GraphQLArgument;
+import graphql.schema.GraphQLFieldDefinition;
+import graphql.schema.GraphQLList;
+import graphql.schema.GraphQLObjectType;
+import graphql.schema.GraphQLScalarType;
+import graphql.schema.GraphQLSchema;
+import graphql.schema.GraphQLType;
 import java.beans.BeanInfo;
 import java.beans.Introspector;
 import java.beans.PropertyDescriptor;
@@ -60,56 +107,9 @@
 import javax.persistence.metamodel.PluralAttribute;
 import javax.persistence.metamodel.SingularAttribute;
 import javax.persistence.metamodel.Type;
-import com.introproventures.graphql.jpa.query.annotation.GraphQLDefaultOrderBy;
-import com.introproventures.graphql.jpa.query.introspection.ReflectionUtil;
-import com.introproventures.graphql.jpa.query.schema.JavaScalars;
-import com.introproventures.graphql.jpa.query.schema.RestrictedKeysProvider;
-import com.introproventures.graphql.jpa.query.schema.impl.EntityIntrospector.EntityIntrospectionResult;
-import com.introproventures.graphql.jpa.query.schema.impl.EntityIntrospector.EntityIntrospectionResult.AttributePropertyDescriptor;
-import com.introproventures.graphql.jpa.query.schema.impl.PredicateFilter.Criteria;
-import com.introproventures.graphql.jpa.query.support.GraphQLSupport;
-import graphql.GraphQLException;
-import graphql.execution.CoercedVariables;
-import graphql.execution.MergedField;
-import graphql.execution.ValuesResolver;
-import graphql.language.Argument;
-import graphql.language.ArrayValue;
-import graphql.language.BooleanValue;
-import graphql.language.EnumValue;
-import graphql.language.Field;
-import graphql.language.FloatValue;
-import graphql.language.IntValue;
-import graphql.language.NullValue;
-import graphql.language.ObjectField;
-import graphql.language.ObjectValue;
-import graphql.language.SelectionSet;
-import graphql.language.StringValue;
-import graphql.language.Value;
-import graphql.language.VariableReference;
-import graphql.schema.DataFetchingEnvironment;
-import graphql.schema.GraphQLArgument;
-import graphql.schema.GraphQLFieldDefinition;
-import graphql.schema.GraphQLList;
-import graphql.schema.GraphQLObjectType;
-import graphql.schema.GraphQLScalarType;
-import graphql.schema.GraphQLSchema;
-import graphql.schema.GraphQLType;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import static com.introproventures.graphql.jpa.query.schema.impl.GraphQLJpaSchemaBuilder.SELECT_DISTINCT_PARAM_NAME;
-import static com.introproventures.graphql.jpa.query.support.GraphQLSupport.getObjectField;
-import static com.introproventures.graphql.jpa.query.support.GraphQLSupport.isAfterArgument;
-import static com.introproventures.graphql.jpa.query.support.GraphQLSupport.isDistinctArgument;
-import static com.introproventures.graphql.jpa.query.support.GraphQLSupport.isFirstArgument;
-import static com.introproventures.graphql.jpa.query.support.GraphQLSupport.isLogicalArgument;
-import static com.introproventures.graphql.jpa.query.support.GraphQLSupport.isPageArgument;
-import static com.introproventures.graphql.jpa.query.support.GraphQLSupport.isWhereArgument;
-import static graphql.introspection.Introspection.SchemaMetaFieldDef;
-import static graphql.introspection.Introspection.TypeMetaFieldDef;
-import static graphql.introspection.Introspection.TypeNameMetaFieldDef;
-import static java.util.stream.Collectors.groupingBy;
-
 /**
  * Provides implemetation for GraphQL JPA Query Factory
  *
@@ -121,6 +121,26 @@ public final class GraphQLJpaQueryFactory {
     private static final String DESC = "DESC";
 
     private final static Logger logger = LoggerFactory.getLogger(GraphQLJpaQueryFactory.class);
+    private static Function<Object, Object> unproxy;
+
+    static {
+        try {
+            Class<?> hibernateClass =Class.forName("org.hibernate.Hibernate");
+            Method unproxyMethod = hibernateClass.getDeclaredMethod("unproxy", Object.class);
+
+            unproxy = proxy -> {
+                try {
+                    return unproxyMethod.invoke(null, proxy);
+                } catch (Exception ignored) {}
+
+                return proxy;
+            };
+
+        } catch (Exception ignored) {
+            unproxy = Function.identity();
+        }
+
+    }
 
     protected static final String WHERE = "where";
     protected static final String OPTIONAL = "optional";
@@ -260,13 +280,13 @@ protected <T> Stream<T> getResultStream(TypedQuery<T> query,
 
         if (resultStream) {
             return query.getResultStream()
-                        .peek(entityManager::detach);
+                        .map(this::applyUnproxy);
         }
 
         // Let's execute query and wrap result into stream
         return query.getResultList()
                     .stream()
-                    .peek(entityManager::detach);
+                    .map(this::applyUnproxy);
     }
 
     protected Object querySingleResult(final DataFetchingEnvironment environment) {
@@ -289,13 +309,9 @@ protected Object querySingleResult(final DataFetchingEnvironment environment) {
                 logger.info("\nGraphQL JPQL Single Result Query String:\n    {}", getJPQLQueryString(query));
             }
     
-            Object result = query.getSingleResult();
-            
-            if (result != null) {
-                entityManager.detach(result);
-            }
-            
-            return result;
+            return Optional.ofNullable(query.getSingleResult())
+                .map(this::applyUnproxy)
+                .orElse(null);
         }
         
         return null;
@@ -417,9 +433,8 @@ protected Map<Object, List<Object>> loadOneToMany(DataFetchingEnvironment enviro
         List<Object[]> resultList = getResultList(query);
 
         Map<Object, List<Object>> batch = resultList.stream()
-                                                    .peek(t -> entityManager.detach(t[1]))
                                                     .collect(groupingBy(t -> t[0],
-                                                                        Collectors.mapping(t -> t[1],
+                                                                        Collectors.mapping(t -> this.applyUnproxy(t[1]),
                                                                                            GraphQLSupport.toResultList())));
         Map<Object, List<Object>> resultMap = new LinkedHashMap<>(keys.size());
 
@@ -442,9 +457,7 @@ protected Map<Object, Object> loadManyToOne(DataFetchingEnvironment environment,
 
         Map<Object, Object> resultMap = new LinkedHashMap<>(resultList.size());
 
-        resultList.stream()
-                  .peek(t -> entityManager.detach(t[1]))
-                  .forEach(item -> resultMap.put(item[0], item[1]));
+        resultList.forEach(item -> resultMap.put(item[0], this.applyUnproxy(item[1])));
 
         return resultMap;
     }
@@ -1871,6 +1884,10 @@ protected boolean hasAnySelectionOrderBy(Field field) {
 
     }
 
+    private <T> T applyUnproxy(T entity) {
+        return (T) unproxy.apply(entity);
+    }
+
     /**
      * Creates builder to build {@link GraphQLJpaQueryFactory}.
      * @return created builder
diff --git a/graphql-jpa-query-schema/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/GraphQLJpaToManyDataFetcher.java b/graphql-jpa-query-schema/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/GraphQLJpaToManyDataFetcher.java
index eeb9b0bc6..0bf53a3cb 100644
--- a/graphql-jpa-query-schema/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/GraphQLJpaToManyDataFetcher.java
+++ b/graphql-jpa-query-schema/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/GraphQLJpaToManyDataFetcher.java
@@ -16,25 +16,20 @@
 
 package com.introproventures.graphql.jpa.query.schema.impl;
 
+import com.introproventures.graphql.jpa.query.support.GraphQLSupport;
+import graphql.language.Argument;
+import graphql.language.Field;
+import graphql.schema.DataFetcher;
+import graphql.schema.DataFetchingEnvironment;
+import graphql.schema.GraphQLNamedType;
 import java.util.List;
 import java.util.Optional;
-
 import javax.persistence.metamodel.PluralAttribute;
-
-import graphql.schema.GraphQLNamedType;
 import org.dataloader.DataLoader;
 import org.dataloader.DataLoaderOptions;
 import org.dataloader.DataLoaderRegistry;
 import org.dataloader.MappedBatchLoaderWithContext;
 
-import com.introproventures.graphql.jpa.query.support.GraphQLSupport;
-import graphql.GraphQLContext;
-import graphql.language.Argument;
-import graphql.language.Field;
-import graphql.schema.DataFetcher;
-import graphql.schema.DataFetchingEnvironment;
-import graphql.schema.GraphQLType;
-
 /**
  * One-To-Many DataFetcher that uses where argument to filter collection attributes
  *
@@ -79,8 +74,7 @@ public Object get(DataFetchingEnvironment environment) {
 
     protected DataLoader<Object, List<Object>> getDataLoader(DataFetchingEnvironment environment,
                                                              String dataLoaderKey) {
-        GraphQLContext context = environment.getContext();
-        DataLoaderRegistry dataLoaderRegistry = context.get("dataLoaderRegistry");
+        DataLoaderRegistry dataLoaderRegistry = environment.getDataLoaderRegistry();
 
         if (!dataLoaderRegistry.getKeys()
                               .contains(dataLoaderKey)) {
diff --git a/graphql-jpa-query-schema/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/GraphQLJpaToManyMappedBatchLoader.java b/graphql-jpa-query-schema/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/GraphQLJpaToManyMappedBatchLoader.java
index 279fdde66..93fffdf5a 100644
--- a/graphql-jpa-query-schema/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/GraphQLJpaToManyMappedBatchLoader.java
+++ b/graphql-jpa-query-schema/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/GraphQLJpaToManyMappedBatchLoader.java
@@ -1,16 +1,14 @@
 package com.introproventures.graphql.jpa.query.schema.impl;
 
+import graphql.schema.DataFetchingEnvironment;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.CompletionStage;
-
 import org.dataloader.BatchLoaderEnvironment;
 import org.dataloader.MappedBatchLoaderWithContext;
 
-import graphql.schema.DataFetchingEnvironment;
-
 // a batch loader function that will be called with N or more keys for batch loading
 class GraphQLJpaToManyMappedBatchLoader implements MappedBatchLoaderWithContext<Object, List<Object>> {
 
@@ -26,7 +24,7 @@ public CompletionStage<Map<Object, List<Object>>> load(Set<Object> keys, BatchLo
         DataFetchingEnvironment context = (DataFetchingEnvironment) environment.getKeyContexts()
                                                                                .get(key);
 
-        return CompletableFuture.supplyAsync(() -> queryFactory.loadOneToMany(context, keys));
+        return CompletableFuture.supplyAsync(() -> queryFactory.loadOneToMany(context, keys), Runnable::run);
     }
 
 
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 72e96322a..9536c108d 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
@@ -18,23 +18,18 @@
 
 import static javax.persistence.metamodel.Attribute.PersistentAttributeType.EMBEDDED;
 
+import graphql.language.Argument;
+import graphql.language.Field;
+import graphql.schema.DataFetcher;
+import graphql.schema.DataFetchingEnvironment;
+import graphql.schema.GraphQLNamedType;
 import java.util.Optional;
-
 import javax.persistence.metamodel.SingularAttribute;
-
-import graphql.schema.GraphQLNamedType;
 import org.dataloader.DataLoader;
 import org.dataloader.DataLoaderOptions;
 import org.dataloader.DataLoaderRegistry;
 import org.dataloader.MappedBatchLoaderWithContext;
 
-import graphql.GraphQLContext;
-import graphql.language.Argument;
-import graphql.language.Field;
-import graphql.schema.DataFetcher;
-import graphql.schema.DataFetchingEnvironment;
-import graphql.schema.GraphQLType;
-
 /**
  * One-To-Many DataFetcher that uses where argument to filter collection attributes
  *
@@ -81,8 +76,7 @@ public Object get(DataFetchingEnvironment environment) {
 
     protected DataLoader<Object, Object> getDataLoader(DataFetchingEnvironment environment,
                                                        String dataLoaderKey) {
-        GraphQLContext context = environment.getContext();
-        DataLoaderRegistry dataLoaderRegistry = context.get("dataLoaderRegistry");
+        DataLoaderRegistry dataLoaderRegistry = environment.getDataLoaderRegistry();
 
         if (!dataLoaderRegistry.getKeys()
                                .contains(dataLoaderKey)) {
diff --git a/graphql-jpa-query-schema/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/GraphQLJpaToOneMappedBatchLoader.java b/graphql-jpa-query-schema/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/GraphQLJpaToOneMappedBatchLoader.java
index 93fb4668b..c19479032 100644
--- a/graphql-jpa-query-schema/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/GraphQLJpaToOneMappedBatchLoader.java
+++ b/graphql-jpa-query-schema/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/GraphQLJpaToOneMappedBatchLoader.java
@@ -1,15 +1,13 @@
 package com.introproventures.graphql.jpa.query.schema.impl;
 
+import graphql.schema.DataFetchingEnvironment;
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.CompletionStage;
-
 import org.dataloader.BatchLoaderEnvironment;
 import org.dataloader.MappedBatchLoaderWithContext;
 
-import graphql.schema.DataFetchingEnvironment;
-
 // a batch loader function that will be called with N or more keys for batch loading
 class GraphQLJpaToOneMappedBatchLoader implements MappedBatchLoaderWithContext<Object, Object> {
 
@@ -25,6 +23,6 @@ public CompletionStage<Map<Object, Object>> load(Set<Object> keys, BatchLoaderEn
         DataFetchingEnvironment context = (DataFetchingEnvironment) environment.getKeyContexts()
                                                                                .get(key);
 
-        return CompletableFuture.supplyAsync(() -> queryFactory.loadManyToOne(context, keys));
+        return CompletableFuture.supplyAsync(() -> queryFactory.loadManyToOne(context, keys), Runnable::run);
     }
 };
diff --git a/graphql-jpa-query-schema/src/test/java/com/introproventures/graphql/jpa/query/converter/GraphQLJpaConverterTests.java b/graphql-jpa-query-schema/src/test/java/com/introproventures/graphql/jpa/query/converter/GraphQLJpaConverterTests.java
index 27d0e406f..4d0746516 100644
--- a/graphql-jpa-query-schema/src/test/java/com/introproventures/graphql/jpa/query/converter/GraphQLJpaConverterTests.java
+++ b/graphql-jpa-query-schema/src/test/java/com/introproventures/graphql/jpa/query/converter/GraphQLJpaConverterTests.java
@@ -18,10 +18,20 @@
 
 import static org.assertj.core.api.Assertions.assertThat;
 
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.introproventures.graphql.jpa.query.AbstractSpringBootTestSupport;
+import com.introproventures.graphql.jpa.query.converter.model.JsonEntity;
+import com.introproventures.graphql.jpa.query.converter.model.TaskEntity;
+import com.introproventures.graphql.jpa.query.converter.model.TaskVariableEntity;
+import com.introproventures.graphql.jpa.query.converter.model.VariableValue;
+import com.introproventures.graphql.jpa.query.schema.GraphQLExecutor;
+import com.introproventures.graphql.jpa.query.schema.GraphQLSchemaBuilder;
+import com.introproventures.graphql.jpa.query.schema.impl.GraphQLJpaExecutor;
+import com.introproventures.graphql.jpa.query.schema.impl.GraphQLJpaSchemaBuilder;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
-
 import javax.persistence.EntityManager;
 import javax.persistence.Query;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -31,26 +41,12 @@
 import javax.persistence.criteria.Root;
 import javax.persistence.criteria.Subquery;
 import javax.transaction.Transactional;
-
 import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.context.annotation.Bean;
 
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.introproventures.graphql.jpa.query.AbstractSpringBootTestSupport;
-import com.introproventures.graphql.jpa.query.converter.model.JsonEntity;
-import com.introproventures.graphql.jpa.query.converter.model.TaskEntity;
-import com.introproventures.graphql.jpa.query.converter.model.TaskVariableEntity;
-import com.introproventures.graphql.jpa.query.converter.model.VariableValue;
-import com.introproventures.graphql.jpa.query.schema.GraphQLExecutor;
-import com.introproventures.graphql.jpa.query.schema.GraphQLSchemaBuilder;
-import com.introproventures.graphql.jpa.query.schema.impl.GraphQLJpaExecutor;
-import com.introproventures.graphql.jpa.query.schema.impl.GraphQLJpaSchemaBuilder;
-
 
 @SpringBootTest(properties = {
         "spring.sql.init.data-locations=GraphQLJpaConverterTests.sql",
@@ -895,4 +891,29 @@ public void testGraphqlTasksQueryWithNENullValues() {
         assertThat(result.toString()).isEqualTo(expected);
     }
 
-}
\ No newline at end of file
+    @Test
+    public void testGraphqlTasksQueryWithEmbeddedVariablesWhereCriteria() throws InterruptedException {
+        // @formatter:off
+        String query =
+            "query getTasks {" +
+                "  Tasks(where: {businessKey: {EQ: \"bk1\"}}) {" +
+                "    select {" +
+                "      businessKey" +
+                "      variables(where: {name: {EQ: \"variable1\"}}) {" +
+                "        name" +
+                "        value" +
+                "      }" +
+                "    }" +
+                "  }" +
+                "}";
+        // @formatter:on
+
+        Object result = executor.execute(query)
+            .getData();
+
+        String expected = "{Tasks={select=[{businessKey=bk1, variables=[{name=variable1, value=data}]}]}}";
+
+        assertThat(result.toString()).isEqualTo(expected);
+    }
+
+}
diff --git a/graphql-jpa-query-schema/src/test/java/com/introproventures/graphql/jpa/query/support/StarwarsQueryExecutorTestsSupport.java b/graphql-jpa-query-schema/src/test/java/com/introproventures/graphql/jpa/query/support/StarwarsQueryExecutorTestsSupport.java
index 19af2ff2f..af44f376c 100644
--- a/graphql-jpa-query-schema/src/test/java/com/introproventures/graphql/jpa/query/support/StarwarsQueryExecutorTestsSupport.java
+++ b/graphql-jpa-query-schema/src/test/java/com/introproventures/graphql/jpa/query/support/StarwarsQueryExecutorTestsSupport.java
@@ -16,6 +16,14 @@
 
 package com.introproventures.graphql.jpa.query.support;
 
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.AssertionsForClassTypes.tuple;
+
+import com.introproventures.graphql.jpa.query.AbstractSpringBootTestSupport;
+import com.introproventures.graphql.jpa.query.schema.impl.GraphQLJpaExecutor;
+import com.introproventures.graphql.jpa.query.schema.model.starwars.Character;
+import com.introproventures.graphql.jpa.query.schema.model.starwars.Droid;
+import com.introproventures.graphql.jpa.query.schema.model.starwars.Human;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
@@ -24,19 +32,11 @@
 import javax.persistence.EntityManager;
 import javax.persistence.Query;
 import javax.transaction.Transactional;
-import com.introproventures.graphql.jpa.query.AbstractSpringBootTestSupport;
-import com.introproventures.graphql.jpa.query.schema.impl.GraphQLJpaExecutor;
-import com.introproventures.graphql.jpa.query.schema.model.starwars.Character;
-import com.introproventures.graphql.jpa.query.schema.model.starwars.Droid;
-import com.introproventures.graphql.jpa.query.schema.model.starwars.Human;
 import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.PlatformTransactionManager;
 import org.springframework.transaction.support.TransactionTemplate;
 
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.AssertionsForClassTypes.tuple;
-
 public abstract class StarwarsQueryExecutorTestsSupport extends AbstractSpringBootTestSupport {
 
     @Autowired
@@ -2116,6 +2116,7 @@ public void queryWithInLineExplicitOptionalFalseForSingularAttributeAndWhereSear
 
     // https://github.com/introproventures/graphql-jpa-query/issues/273
     @Test
+    @Transactional
     public void testGH273Plural() {
 
         //given:
diff --git a/graphql-jpa-query-web/src/main/java/com/introproventures/graphql/jpa/query/web/GraphQLController.java b/graphql-jpa-query-web/src/main/java/com/introproventures/graphql/jpa/query/web/GraphQLController.java
index eab1d6016..480f85893 100644
--- a/graphql-jpa-query-web/src/main/java/com/introproventures/graphql/jpa/query/web/GraphQLController.java
+++ b/graphql-jpa-query-web/src/main/java/com/introproventures/graphql/jpa/query/web/GraphQLController.java
@@ -20,11 +20,18 @@
 import com.introproventures.graphql.jpa.query.schema.GraphQLExecutor;
 import com.introproventures.graphql.jpa.query.schema.impl.GraphQLJpaExecutor;
 import graphql.ExecutionResult;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.UncheckedIOException;
+import java.util.HashMap;
+import java.util.Map;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import javax.validation.constraints.NotNull;
 import org.reactivestreams.Publisher;
 import org.reactivestreams.Subscriber;
 import org.reactivestreams.Subscription;
 import org.springframework.http.MediaType;
-import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -34,15 +41,6 @@
 import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
 import org.springframework.web.servlet.mvc.method.annotation.SseEmitter.SseEventBuilder;
 
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
-import javax.validation.constraints.NotNull;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.io.UncheckedIOException;
-import java.util.HashMap;
-import java.util.Map;
-
 /**
  * Spring Boot GraphQL Query Rest Controller with HTTP mapping endpoints for GraphQLExecutor relay
  *
@@ -50,7 +48,6 @@
  *
  */
 @RestController
-@Transactional
 public class GraphQLController {
 
     private static final String PATH = "${spring.graphql.jpa.query.web.path:/graphql}";

From e9d57d54ab07767acd16bc09edef7cef6e12d452 Mon Sep 17 00:00:00 2001
From: Igor Dianov <igor@dianov.com>
Date: Mon, 27 Nov 2023 05:57:02 -0800
Subject: [PATCH 2/5] [maven-release-plugin] Update CHANGELOG.md

---
 CHANGELOG.md | 22 +++++++++++++++++++++-
 1 file changed, 21 insertions(+), 1 deletion(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 3ce9f777a..6ea121363 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,26 @@
 # Change Log
 
-## 0.5.5-SNAPSHOT
+## 0.5.5
+* Fix incorrect query intermittent results due to result list proxies (#379) [ee57b69](https://github.com/introproventures/graphql-jpa-query/commit/ee57b696b9ea699ba700cf08f7dba93fb1e1b8c8)
+* chore(deps): bump evo-inflector from 1.2.2 to 1.3 (#346) [f7fbd31](https://github.com/introproventures/graphql-jpa-query/commit/f7fbd31920fe4c2ac149dad6a716ae1834d74199)
+* fix: update release.yml dependencies emojii [d0afde4](https://github.com/introproventures/graphql-jpa-query/commit/d0afde4f955e2cb944d8334afb5c655a76194737)
+* chore(deps): bump maven-gpg-plugin from 1.4 to 3.0.1 (#335) [56e4caa](https://github.com/introproventures/graphql-jpa-query/commit/56e4caa08d56d0a3b3c67ddda435679b5a834de2)
+* Bump maven-assembly-plugin from 2.3 to 3.4.2 (#329) [334c6b3](https://github.com/introproventures/graphql-jpa-query/commit/334c6b3545c80209ef76e748b9f825975bea9b52)
+* Bump maven-surefire-plugin from 2.12 to 3.0.0-M7 (#326) [11fab40](https://github.com/introproventures/graphql-jpa-query/commit/11fab40a9d656fcca1bda50f558280053c9c346f)
+* Bump maven-javadoc-plugin from 3.1.0 to 3.4.1 (#330) [692455b](https://github.com/introproventures/graphql-jpa-query/commit/692455beff2848191b519db4f5bc680b8b36d42d)
+* Bump maven-dependency-plugin from 2.10 to 3.4.0 (#323) [9096df4](https://github.com/introproventures/graphql-jpa-query/commit/9096df443570ac6e960bc48d47f6b592ca58f7d2)
+* Bump maven-compiler-plugin from 3.8.0 to 3.10.1 (#327) [e02fc14](https://github.com/introproventures/graphql-jpa-query/commit/e02fc14c6d0976d9f55246041735fe5c823236ab)
+* chore(deps): bump nexus-staging-maven-plugin from 1.6.7 to 1.6.13 (#334) [acf663b](https://github.com/introproventures/graphql-jpa-query/commit/acf663b72cdaa7bf678cdda8f07c80a4f366ef32)
+* Bump maven-release-plugin from 2.5.1 to 2.5.3 (#328) [eea64e3](https://github.com/introproventures/graphql-jpa-query/commit/eea64e3a63761fea429a7aaafb2a6ed0b2452e9a)
+* Bump jacoco-maven-plugin from 0.8.7 to 0.8.8 (#324) [e912091](https://github.com/introproventures/graphql-jpa-query/commit/e912091aebb02a559404576d822531052620b7c8)
+* Bump maven-jar-plugin from 2.4 to 3.3.0 (#322) [d906b4f](https://github.com/introproventures/graphql-jpa-query/commit/d906b4f10a83aff9eda84dacea1418c64de21946)
+* Update spring-boot-dependencies from 2.7.6 to 2.7.7 (#332) [858b63b](https://github.com/introproventures/graphql-jpa-query/commit/858b63b10d681a89a2595921401c4263ee439d4b)
+* fix: update .github/release.yml titles with emoji  [0f812a0](https://github.com/introproventures/graphql-jpa-query/commit/0f812a001aff50d7d8974545572bcdeb9a84dba6)
+* fix: move release.yml to .github folder [0fa3acd](https://github.com/introproventures/graphql-jpa-query/commit/0fa3acd97f943478c6f398bf8e8154e989376f0f)
+* fix: add github release notes changelog template [fdffe2d](https://github.com/introproventures/graphql-jpa-query/commit/fdffe2d2797f7a6e201b330acfe7cd145e0a7db8)
+* chore: add Github dependabot [d6b5b86](https://github.com/introproventures/graphql-jpa-query/commit/d6b5b863fcaaa8f1502bc3d9fc084bdca6895677)
+* Update issue templates (#321) [4d4b8e9](https://github.com/introproventures/graphql-jpa-query/commit/4d4b8e9d4fa067a5e19056544cd211e968680a16)
+* fix: add support for jdk 17 build (#320) [9539a7e](https://github.com/introproventures/graphql-jpa-query/commit/9539a7e5f9f905254dc5b5412a89c1d3d668f282)
 * fix: add spring-graphql  to graphq-jpa-query autoconfigure module (#315) [9809aef](https://github.com/introproventures/graphql-jpa-query/commit/9809aef503255b11852723c8e20aa7018adcf7fe)
 * fix: update spring-boot-dependencies to 2.7.6 (#319) [e7dbbce](https://github.com/introproventures/graphql-jpa-query/commit/e7dbbcefb3748e11a7665828e436f1697f4a96f1)
 * feat: add scalar builder method to graphql query schema builder  (#318) [56be363](https://github.com/introproventures/graphql-jpa-query/commit/56be363e6f9b78c7b993cc933858ff0a2742e530)

From 1fb99ef74a653c89ee209aaaf557de8dbd63d727 Mon Sep 17 00:00:00 2001
From: Igor Dianov <igor@dianov.com>
Date: Mon, 27 Nov 2023 05:58:04 -0800
Subject: [PATCH 3/5] [maven-release-plugin] prepare release 0.5.5

---
 graphql-jpa-query-annotations/pom.xml            | 2 +-
 graphql-jpa-query-autoconfigure/pom.xml          | 2 +-
 graphql-jpa-query-boot-starter-graphql/pom.xml   | 2 +-
 graphql-jpa-query-boot-starter/pom.xml           | 2 +-
 graphql-jpa-query-build/pom.xml                  | 5 ++---
 graphql-jpa-query-dependencies/pom.xml           | 5 ++---
 graphql-jpa-query-example-merge/pom.xml          | 2 +-
 graphql-jpa-query-example-model-books/pom.xml    | 2 +-
 graphql-jpa-query-example-model-starwars/pom.xml | 2 +-
 graphql-jpa-query-example-relay/pom.xml          | 2 +-
 graphql-jpa-query-example-simple/pom.xml         | 2 +-
 graphql-jpa-query-example-spring-graphql/pom.xml | 2 +-
 graphql-jpa-query-graphiql/pom.xml               | 2 +-
 graphql-jpa-query-introspection/pom.xml          | 2 +-
 graphql-jpa-query-scalars/pom.xml                | 5 ++---
 graphql-jpa-query-schema/pom.xml                 | 5 ++---
 graphql-jpa-query-web/pom.xml                    | 2 +-
 pom.xml                                          | 7 +++----
 18 files changed, 24 insertions(+), 29 deletions(-)

diff --git a/graphql-jpa-query-annotations/pom.xml b/graphql-jpa-query-annotations/pom.xml
index 39f200f34..6ab78c78f 100644
--- a/graphql-jpa-query-annotations/pom.xml
+++ b/graphql-jpa-query-annotations/pom.xml
@@ -6,7 +6,7 @@
   <parent>
     <groupId>com.introproventures</groupId>
     <artifactId>graphql-jpa-query-dependencies</artifactId>
-    <version>0.5.5-SNAPSHOT</version>
+    <version>0.5.5</version>
     <relativePath>../graphql-jpa-query-dependencies</relativePath>
   </parent>
 
diff --git a/graphql-jpa-query-autoconfigure/pom.xml b/graphql-jpa-query-autoconfigure/pom.xml
index dee10d1d3..70654ec2c 100644
--- a/graphql-jpa-query-autoconfigure/pom.xml
+++ b/graphql-jpa-query-autoconfigure/pom.xml
@@ -3,7 +3,7 @@
   <parent>
     <groupId>com.introproventures</groupId>
     <artifactId>graphql-jpa-query-build</artifactId>
-    <version>0.5.5-SNAPSHOT</version>
+    <version>0.5.5</version>
     <relativePath>../graphql-jpa-query-build</relativePath>
   </parent>
   <artifactId>graphql-jpa-query-autoconfigure</artifactId>
diff --git a/graphql-jpa-query-boot-starter-graphql/pom.xml b/graphql-jpa-query-boot-starter-graphql/pom.xml
index 22a4038aa..d0090acf4 100644
--- a/graphql-jpa-query-boot-starter-graphql/pom.xml
+++ b/graphql-jpa-query-boot-starter-graphql/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>com.introproventures</groupId>
     <artifactId>graphql-jpa-query-build</artifactId>
-    <version>0.5.5-SNAPSHOT</version>
+    <version>0.5.5</version>
     <relativePath>../graphql-jpa-query-build</relativePath>
   </parent>
   
diff --git a/graphql-jpa-query-boot-starter/pom.xml b/graphql-jpa-query-boot-starter/pom.xml
index 40feef98d..e1ae92624 100644
--- a/graphql-jpa-query-boot-starter/pom.xml
+++ b/graphql-jpa-query-boot-starter/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>com.introproventures</groupId>
     <artifactId>graphql-jpa-query-build</artifactId>
-    <version>0.5.5-SNAPSHOT</version>
+    <version>0.5.5</version>
     <relativePath>../graphql-jpa-query-build</relativePath>
   </parent>
   
diff --git a/graphql-jpa-query-build/pom.xml b/graphql-jpa-query-build/pom.xml
index 6e92ead93..46ae61d97 100644
--- a/graphql-jpa-query-build/pom.xml
+++ b/graphql-jpa-query-build/pom.xml
@@ -1,10 +1,9 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>com.introproventures</groupId>
     <artifactId>graphql-jpa-query-dependencies</artifactId>
-    <version>0.5.5-SNAPSHOT</version>
+    <version>0.5.5</version>
     <relativePath>../graphql-jpa-query-dependencies</relativePath>
   </parent>
   <artifactId>graphql-jpa-query-build</artifactId>
diff --git a/graphql-jpa-query-dependencies/pom.xml b/graphql-jpa-query-dependencies/pom.xml
index be34816f7..e8c972e20 100644
--- a/graphql-jpa-query-dependencies/pom.xml
+++ b/graphql-jpa-query-dependencies/pom.xml
@@ -1,10 +1,9 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>com.introproventures</groupId>
     <artifactId>graphql-jpa-query</artifactId>
-    <version>0.5.5-SNAPSHOT</version>
+    <version>0.5.5</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>graphql-jpa-query-dependencies</artifactId>
diff --git a/graphql-jpa-query-example-merge/pom.xml b/graphql-jpa-query-example-merge/pom.xml
index 27a1e01a0..32d2090a5 100644
--- a/graphql-jpa-query-example-merge/pom.xml
+++ b/graphql-jpa-query-example-merge/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>com.introproventures</groupId>
     <artifactId>graphql-jpa-query-build</artifactId>
-    <version>0.5.5-SNAPSHOT</version>
+    <version>0.5.5</version>
     <relativePath>../graphql-jpa-query-build</relativePath>
   </parent>
   
diff --git a/graphql-jpa-query-example-model-books/pom.xml b/graphql-jpa-query-example-model-books/pom.xml
index 240e2d42f..6e61bfcaf 100644
--- a/graphql-jpa-query-example-model-books/pom.xml
+++ b/graphql-jpa-query-example-model-books/pom.xml
@@ -3,7 +3,7 @@
   <parent>
     <groupId>com.introproventures</groupId>
     <artifactId>graphql-jpa-query-build</artifactId>
-    <version>0.5.5-SNAPSHOT</version>
+    <version>0.5.5</version>
     <relativePath>../graphql-jpa-query-build</relativePath>
   </parent>
   <artifactId>graphql-jpa-query-example-model-books</artifactId>
diff --git a/graphql-jpa-query-example-model-starwars/pom.xml b/graphql-jpa-query-example-model-starwars/pom.xml
index 3cf766da6..14cefc00a 100644
--- a/graphql-jpa-query-example-model-starwars/pom.xml
+++ b/graphql-jpa-query-example-model-starwars/pom.xml
@@ -3,7 +3,7 @@
   <parent>
     <groupId>com.introproventures</groupId>
     <artifactId>graphql-jpa-query-build</artifactId>
-    <version>0.5.5-SNAPSHOT</version>
+    <version>0.5.5</version>
     <relativePath>../graphql-jpa-query-build</relativePath>
   </parent>
     
diff --git a/graphql-jpa-query-example-relay/pom.xml b/graphql-jpa-query-example-relay/pom.xml
index 42e2eae80..ac18cf51c 100644
--- a/graphql-jpa-query-example-relay/pom.xml
+++ b/graphql-jpa-query-example-relay/pom.xml
@@ -6,7 +6,7 @@
   <parent>
     <groupId>com.introproventures</groupId>
     <artifactId>graphql-jpa-query-build</artifactId>
-    <version>0.5.5-SNAPSHOT</version>
+    <version>0.5.5</version>
     <relativePath>../graphql-jpa-query-build</relativePath>
   </parent>
 
diff --git a/graphql-jpa-query-example-simple/pom.xml b/graphql-jpa-query-example-simple/pom.xml
index e4c0eb9cf..b0f59cfbe 100644
--- a/graphql-jpa-query-example-simple/pom.xml
+++ b/graphql-jpa-query-example-simple/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>com.introproventures</groupId>
     <artifactId>graphql-jpa-query-build</artifactId>
-    <version>0.5.5-SNAPSHOT</version>
+    <version>0.5.5</version>
     <relativePath>../graphql-jpa-query-build</relativePath>
   </parent>
   
diff --git a/graphql-jpa-query-example-spring-graphql/pom.xml b/graphql-jpa-query-example-spring-graphql/pom.xml
index 3164b1dae..d5db3ddb1 100644
--- a/graphql-jpa-query-example-spring-graphql/pom.xml
+++ b/graphql-jpa-query-example-spring-graphql/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>com.introproventures</groupId>
     <artifactId>graphql-jpa-query-build</artifactId>
-    <version>0.5.5-SNAPSHOT</version>
+    <version>0.5.5</version>
     <relativePath>../graphql-jpa-query-build</relativePath>
   </parent>
   
diff --git a/graphql-jpa-query-graphiql/pom.xml b/graphql-jpa-query-graphiql/pom.xml
index f91ee2de7..ab03e275d 100644
--- a/graphql-jpa-query-graphiql/pom.xml
+++ b/graphql-jpa-query-graphiql/pom.xml
@@ -3,7 +3,7 @@
   <parent>
     <groupId>com.introproventures</groupId>
     <artifactId>graphql-jpa-query-build</artifactId>
-    <version>0.5.5-SNAPSHOT</version>
+    <version>0.5.5</version>
     <relativePath>../graphql-jpa-query-build</relativePath>
   </parent>
   <artifactId>graphql-jpa-query-graphiql</artifactId>
diff --git a/graphql-jpa-query-introspection/pom.xml b/graphql-jpa-query-introspection/pom.xml
index b8d3c2474..62d1ea136 100644
--- a/graphql-jpa-query-introspection/pom.xml
+++ b/graphql-jpa-query-introspection/pom.xml
@@ -3,7 +3,7 @@
   <parent>
     <groupId>com.introproventures</groupId>
     <artifactId>graphql-jpa-query-build</artifactId>
-    <version>0.5.5-SNAPSHOT</version>
+    <version>0.5.5</version>
     <relativePath>../graphql-jpa-query-build</relativePath>
   </parent>
   <artifactId>graphql-jpa-query-introspection</artifactId>
diff --git a/graphql-jpa-query-scalars/pom.xml b/graphql-jpa-query-scalars/pom.xml
index 70d1d1184..9df9f45a4 100644
--- a/graphql-jpa-query-scalars/pom.xml
+++ b/graphql-jpa-query-scalars/pom.xml
@@ -1,12 +1,11 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <artifactId>graphql-jpa-query-scalars</artifactId>
   <name>graphql-jpa-query-scalars</name>
 
   <parent>
     <groupId>com.introproventures</groupId>
     <artifactId>graphql-jpa-query-build</artifactId>
-    <version>0.5.5-SNAPSHOT</version>
+    <version>0.5.5</version>
     <relativePath>../graphql-jpa-query-build</relativePath>
   </parent>
 
diff --git a/graphql-jpa-query-schema/pom.xml b/graphql-jpa-query-schema/pom.xml
index 5aa49c50d..2d6bd2686 100644
--- a/graphql-jpa-query-schema/pom.xml
+++ b/graphql-jpa-query-schema/pom.xml
@@ -1,12 +1,11 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <artifactId>graphql-jpa-query-schema</artifactId>
   <name>graphql-jpa-query-schema</name>
 
   <parent>
     <groupId>com.introproventures</groupId>
     <artifactId>graphql-jpa-query-build</artifactId>
-    <version>0.5.5-SNAPSHOT</version>
+    <version>0.5.5</version>
     <relativePath>../graphql-jpa-query-build</relativePath>
   </parent>
 
diff --git a/graphql-jpa-query-web/pom.xml b/graphql-jpa-query-web/pom.xml
index a38413e25..bc990616f 100644
--- a/graphql-jpa-query-web/pom.xml
+++ b/graphql-jpa-query-web/pom.xml
@@ -3,7 +3,7 @@
   <parent>
     <groupId>com.introproventures</groupId>
     <artifactId>graphql-jpa-query-build</artifactId>
-    <version>0.5.5-SNAPSHOT</version>
+    <version>0.5.5</version>
     <relativePath>../graphql-jpa-query-build</relativePath>
   </parent>
   <artifactId>graphql-jpa-query-web</artifactId>
diff --git a/pom.xml b/pom.xml
index 1b5d10bc3..52899ca92 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,11 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>com.introproventures</groupId>
   <artifactId>graphql-jpa-query</artifactId>
-  <version>0.5.5-SNAPSHOT</version>
+  <version>0.5.5</version>
   <packaging>pom</packaging>
   <name>GraphQL JPA Query</name>
 
@@ -65,7 +64,7 @@
     <connection>scm:git:https://github.com/introproventures/graphql-jpa-query.git</connection>
     <developerConnection>scm:git:git@github.com:introproventures/graphql-jpa-query.git</developerConnection>
     <url>https://github.com/introproventures/graphql-jpa-query</url>
-    <tag>HEAD</tag>
+    <tag>0.5.5</tag>
   </scm>
 
   <inceptionYear>2017</inceptionYear>

From 1c118a9e24c5a685350ec0e14479d5e15f2cd839 Mon Sep 17 00:00:00 2001
From: Igor Dianov <igor@dianov.com>
Date: Mon, 27 Nov 2023 05:58:14 -0800
Subject: [PATCH 4/5] [maven-release-plugin] Update CHANGELOG.md

---
 CHANGELOG.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6ea121363..b90faf3da 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,6 @@
 # Change Log
 
-## 0.5.5
+## 0.5.6-SNAPSHOT
 * Fix incorrect query intermittent results due to result list proxies (#379) [ee57b69](https://github.com/introproventures/graphql-jpa-query/commit/ee57b696b9ea699ba700cf08f7dba93fb1e1b8c8)
 * chore(deps): bump evo-inflector from 1.2.2 to 1.3 (#346) [f7fbd31](https://github.com/introproventures/graphql-jpa-query/commit/f7fbd31920fe4c2ac149dad6a716ae1834d74199)
 * fix: update release.yml dependencies emojii [d0afde4](https://github.com/introproventures/graphql-jpa-query/commit/d0afde4f955e2cb944d8334afb5c655a76194737)

From 23c146520f09618ffc89d7fd224a0aa371d91a0d Mon Sep 17 00:00:00 2001
From: Igor Dianov <igor@dianov.com>
Date: Mon, 27 Nov 2023 05:58:15 -0800
Subject: [PATCH 5/5] [maven-release-plugin] prepare for next development
 iteration

---
 graphql-jpa-query-annotations/pom.xml            | 2 +-
 graphql-jpa-query-autoconfigure/pom.xml          | 2 +-
 graphql-jpa-query-boot-starter-graphql/pom.xml   | 2 +-
 graphql-jpa-query-boot-starter/pom.xml           | 2 +-
 graphql-jpa-query-build/pom.xml                  | 2 +-
 graphql-jpa-query-dependencies/pom.xml           | 2 +-
 graphql-jpa-query-example-merge/pom.xml          | 2 +-
 graphql-jpa-query-example-model-books/pom.xml    | 2 +-
 graphql-jpa-query-example-model-starwars/pom.xml | 2 +-
 graphql-jpa-query-example-relay/pom.xml          | 2 +-
 graphql-jpa-query-example-simple/pom.xml         | 2 +-
 graphql-jpa-query-example-spring-graphql/pom.xml | 2 +-
 graphql-jpa-query-graphiql/pom.xml               | 2 +-
 graphql-jpa-query-introspection/pom.xml          | 2 +-
 graphql-jpa-query-scalars/pom.xml                | 2 +-
 graphql-jpa-query-schema/pom.xml                 | 2 +-
 graphql-jpa-query-web/pom.xml                    | 2 +-
 pom.xml                                          | 4 ++--
 18 files changed, 19 insertions(+), 19 deletions(-)

diff --git a/graphql-jpa-query-annotations/pom.xml b/graphql-jpa-query-annotations/pom.xml
index 6ab78c78f..b31ba08c5 100644
--- a/graphql-jpa-query-annotations/pom.xml
+++ b/graphql-jpa-query-annotations/pom.xml
@@ -6,7 +6,7 @@
   <parent>
     <groupId>com.introproventures</groupId>
     <artifactId>graphql-jpa-query-dependencies</artifactId>
-    <version>0.5.5</version>
+    <version>0.5.6-SNAPSHOT</version>
     <relativePath>../graphql-jpa-query-dependencies</relativePath>
   </parent>
 
diff --git a/graphql-jpa-query-autoconfigure/pom.xml b/graphql-jpa-query-autoconfigure/pom.xml
index 70654ec2c..41ca71ad6 100644
--- a/graphql-jpa-query-autoconfigure/pom.xml
+++ b/graphql-jpa-query-autoconfigure/pom.xml
@@ -3,7 +3,7 @@
   <parent>
     <groupId>com.introproventures</groupId>
     <artifactId>graphql-jpa-query-build</artifactId>
-    <version>0.5.5</version>
+    <version>0.5.6-SNAPSHOT</version>
     <relativePath>../graphql-jpa-query-build</relativePath>
   </parent>
   <artifactId>graphql-jpa-query-autoconfigure</artifactId>
diff --git a/graphql-jpa-query-boot-starter-graphql/pom.xml b/graphql-jpa-query-boot-starter-graphql/pom.xml
index d0090acf4..9257f4ea9 100644
--- a/graphql-jpa-query-boot-starter-graphql/pom.xml
+++ b/graphql-jpa-query-boot-starter-graphql/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>com.introproventures</groupId>
     <artifactId>graphql-jpa-query-build</artifactId>
-    <version>0.5.5</version>
+    <version>0.5.6-SNAPSHOT</version>
     <relativePath>../graphql-jpa-query-build</relativePath>
   </parent>
   
diff --git a/graphql-jpa-query-boot-starter/pom.xml b/graphql-jpa-query-boot-starter/pom.xml
index e1ae92624..21bbad4fc 100644
--- a/graphql-jpa-query-boot-starter/pom.xml
+++ b/graphql-jpa-query-boot-starter/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>com.introproventures</groupId>
     <artifactId>graphql-jpa-query-build</artifactId>
-    <version>0.5.5</version>
+    <version>0.5.6-SNAPSHOT</version>
     <relativePath>../graphql-jpa-query-build</relativePath>
   </parent>
   
diff --git a/graphql-jpa-query-build/pom.xml b/graphql-jpa-query-build/pom.xml
index 46ae61d97..6fc834cff 100644
--- a/graphql-jpa-query-build/pom.xml
+++ b/graphql-jpa-query-build/pom.xml
@@ -3,7 +3,7 @@
   <parent>
     <groupId>com.introproventures</groupId>
     <artifactId>graphql-jpa-query-dependencies</artifactId>
-    <version>0.5.5</version>
+    <version>0.5.6-SNAPSHOT</version>
     <relativePath>../graphql-jpa-query-dependencies</relativePath>
   </parent>
   <artifactId>graphql-jpa-query-build</artifactId>
diff --git a/graphql-jpa-query-dependencies/pom.xml b/graphql-jpa-query-dependencies/pom.xml
index e8c972e20..fce1655ed 100644
--- a/graphql-jpa-query-dependencies/pom.xml
+++ b/graphql-jpa-query-dependencies/pom.xml
@@ -3,7 +3,7 @@
   <parent>
     <groupId>com.introproventures</groupId>
     <artifactId>graphql-jpa-query</artifactId>
-    <version>0.5.5</version>
+    <version>0.5.6-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>graphql-jpa-query-dependencies</artifactId>
diff --git a/graphql-jpa-query-example-merge/pom.xml b/graphql-jpa-query-example-merge/pom.xml
index 32d2090a5..f575726c1 100644
--- a/graphql-jpa-query-example-merge/pom.xml
+++ b/graphql-jpa-query-example-merge/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>com.introproventures</groupId>
     <artifactId>graphql-jpa-query-build</artifactId>
-    <version>0.5.5</version>
+    <version>0.5.6-SNAPSHOT</version>
     <relativePath>../graphql-jpa-query-build</relativePath>
   </parent>
   
diff --git a/graphql-jpa-query-example-model-books/pom.xml b/graphql-jpa-query-example-model-books/pom.xml
index 6e61bfcaf..03d1c7375 100644
--- a/graphql-jpa-query-example-model-books/pom.xml
+++ b/graphql-jpa-query-example-model-books/pom.xml
@@ -3,7 +3,7 @@
   <parent>
     <groupId>com.introproventures</groupId>
     <artifactId>graphql-jpa-query-build</artifactId>
-    <version>0.5.5</version>
+    <version>0.5.6-SNAPSHOT</version>
     <relativePath>../graphql-jpa-query-build</relativePath>
   </parent>
   <artifactId>graphql-jpa-query-example-model-books</artifactId>
diff --git a/graphql-jpa-query-example-model-starwars/pom.xml b/graphql-jpa-query-example-model-starwars/pom.xml
index 14cefc00a..a3c4c5889 100644
--- a/graphql-jpa-query-example-model-starwars/pom.xml
+++ b/graphql-jpa-query-example-model-starwars/pom.xml
@@ -3,7 +3,7 @@
   <parent>
     <groupId>com.introproventures</groupId>
     <artifactId>graphql-jpa-query-build</artifactId>
-    <version>0.5.5</version>
+    <version>0.5.6-SNAPSHOT</version>
     <relativePath>../graphql-jpa-query-build</relativePath>
   </parent>
     
diff --git a/graphql-jpa-query-example-relay/pom.xml b/graphql-jpa-query-example-relay/pom.xml
index ac18cf51c..291f483c9 100644
--- a/graphql-jpa-query-example-relay/pom.xml
+++ b/graphql-jpa-query-example-relay/pom.xml
@@ -6,7 +6,7 @@
   <parent>
     <groupId>com.introproventures</groupId>
     <artifactId>graphql-jpa-query-build</artifactId>
-    <version>0.5.5</version>
+    <version>0.5.6-SNAPSHOT</version>
     <relativePath>../graphql-jpa-query-build</relativePath>
   </parent>
 
diff --git a/graphql-jpa-query-example-simple/pom.xml b/graphql-jpa-query-example-simple/pom.xml
index b0f59cfbe..36d72e30e 100644
--- a/graphql-jpa-query-example-simple/pom.xml
+++ b/graphql-jpa-query-example-simple/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>com.introproventures</groupId>
     <artifactId>graphql-jpa-query-build</artifactId>
-    <version>0.5.5</version>
+    <version>0.5.6-SNAPSHOT</version>
     <relativePath>../graphql-jpa-query-build</relativePath>
   </parent>
   
diff --git a/graphql-jpa-query-example-spring-graphql/pom.xml b/graphql-jpa-query-example-spring-graphql/pom.xml
index d5db3ddb1..4ba6e3c97 100644
--- a/graphql-jpa-query-example-spring-graphql/pom.xml
+++ b/graphql-jpa-query-example-spring-graphql/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>com.introproventures</groupId>
     <artifactId>graphql-jpa-query-build</artifactId>
-    <version>0.5.5</version>
+    <version>0.5.6-SNAPSHOT</version>
     <relativePath>../graphql-jpa-query-build</relativePath>
   </parent>
   
diff --git a/graphql-jpa-query-graphiql/pom.xml b/graphql-jpa-query-graphiql/pom.xml
index ab03e275d..2874ab328 100644
--- a/graphql-jpa-query-graphiql/pom.xml
+++ b/graphql-jpa-query-graphiql/pom.xml
@@ -3,7 +3,7 @@
   <parent>
     <groupId>com.introproventures</groupId>
     <artifactId>graphql-jpa-query-build</artifactId>
-    <version>0.5.5</version>
+    <version>0.5.6-SNAPSHOT</version>
     <relativePath>../graphql-jpa-query-build</relativePath>
   </parent>
   <artifactId>graphql-jpa-query-graphiql</artifactId>
diff --git a/graphql-jpa-query-introspection/pom.xml b/graphql-jpa-query-introspection/pom.xml
index 62d1ea136..36a0714d5 100644
--- a/graphql-jpa-query-introspection/pom.xml
+++ b/graphql-jpa-query-introspection/pom.xml
@@ -3,7 +3,7 @@
   <parent>
     <groupId>com.introproventures</groupId>
     <artifactId>graphql-jpa-query-build</artifactId>
-    <version>0.5.5</version>
+    <version>0.5.6-SNAPSHOT</version>
     <relativePath>../graphql-jpa-query-build</relativePath>
   </parent>
   <artifactId>graphql-jpa-query-introspection</artifactId>
diff --git a/graphql-jpa-query-scalars/pom.xml b/graphql-jpa-query-scalars/pom.xml
index 9df9f45a4..7fbf5ba1a 100644
--- a/graphql-jpa-query-scalars/pom.xml
+++ b/graphql-jpa-query-scalars/pom.xml
@@ -5,7 +5,7 @@
   <parent>
     <groupId>com.introproventures</groupId>
     <artifactId>graphql-jpa-query-build</artifactId>
-    <version>0.5.5</version>
+    <version>0.5.6-SNAPSHOT</version>
     <relativePath>../graphql-jpa-query-build</relativePath>
   </parent>
 
diff --git a/graphql-jpa-query-schema/pom.xml b/graphql-jpa-query-schema/pom.xml
index 2d6bd2686..a85eb5ca6 100644
--- a/graphql-jpa-query-schema/pom.xml
+++ b/graphql-jpa-query-schema/pom.xml
@@ -5,7 +5,7 @@
   <parent>
     <groupId>com.introproventures</groupId>
     <artifactId>graphql-jpa-query-build</artifactId>
-    <version>0.5.5</version>
+    <version>0.5.6-SNAPSHOT</version>
     <relativePath>../graphql-jpa-query-build</relativePath>
   </parent>
 
diff --git a/graphql-jpa-query-web/pom.xml b/graphql-jpa-query-web/pom.xml
index bc990616f..00a062bef 100644
--- a/graphql-jpa-query-web/pom.xml
+++ b/graphql-jpa-query-web/pom.xml
@@ -3,7 +3,7 @@
   <parent>
     <groupId>com.introproventures</groupId>
     <artifactId>graphql-jpa-query-build</artifactId>
-    <version>0.5.5</version>
+    <version>0.5.6-SNAPSHOT</version>
     <relativePath>../graphql-jpa-query-build</relativePath>
   </parent>
   <artifactId>graphql-jpa-query-web</artifactId>
diff --git a/pom.xml b/pom.xml
index 52899ca92..ee05ed7cf 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
 
   <groupId>com.introproventures</groupId>
   <artifactId>graphql-jpa-query</artifactId>
-  <version>0.5.5</version>
+  <version>0.5.6-SNAPSHOT</version>
   <packaging>pom</packaging>
   <name>GraphQL JPA Query</name>
 
@@ -64,7 +64,7 @@
     <connection>scm:git:https://github.com/introproventures/graphql-jpa-query.git</connection>
     <developerConnection>scm:git:git@github.com:introproventures/graphql-jpa-query.git</developerConnection>
     <url>https://github.com/introproventures/graphql-jpa-query</url>
-    <tag>0.5.5</tag>
+    <tag>HEAD</tag>
   </scm>
 
   <inceptionYear>2017</inceptionYear>