From f5adc049e5af8bd2121e6280e1c4defbdfec6bda Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Tue, 19 Nov 2024 13:46:41 +0100 Subject: [PATCH] Lift restriction on empty `JpaEntityGraph` attributes. This commit removes a check preventing EntityGraphs from being created for JpaEntityGraphs without attributes. Original pull request: #3684 Closes #3682 --- .../data/jpa/repository/query/Jpa21Utils.java | 1 - .../data/jpa/repository/query/Jpa21UtilsTests.java | 10 ++++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/Jpa21Utils.java b/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/Jpa21Utils.java index e43662421..e3133719f 100644 --- a/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/Jpa21Utils.java +++ b/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/Jpa21Utils.java @@ -129,7 +129,6 @@ public class Jpa21Utils { Assert.notNull(em, "EntityManager must not be null"); Assert.notNull(jpaEntityGraph, "JpaEntityGraph must not be null"); Assert.notNull(entityType, "Entity type must not be null"); - Assert.isTrue(jpaEntityGraph.isAdHocEntityGraph(), "The given " + jpaEntityGraph + " is not dynamic"); EntityGraph entityGraph = em.createEntityGraph(entityType); configureFetchGraphFrom(jpaEntityGraph, entityGraph); diff --git a/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/Jpa21UtilsTests.java b/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/Jpa21UtilsTests.java index f09d50be0..64c015ca4 100644 --- a/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/Jpa21UtilsTests.java +++ b/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/Jpa21UtilsTests.java @@ -50,6 +50,7 @@ import org.springframework.util.ObjectUtils; * @author Mark Paluch * @author Jens Schauder * @author Krzysztof Krason + * @author Christoph Strobl */ @ExtendWith(SpringExtension.class) @ContextConfiguration("classpath:application-context.xml") @@ -166,6 +167,15 @@ class Jpa21UtilsTests { em.createEntityGraph(User.class))); } + @Test // GH-3682 + void allowsEmptyGraph() { + + EntityGraph graph = em.createEntityGraph(User.class); + Jpa21Utils.configureFetchGraphFrom(new JpaEntityGraph("User.NoNamedEntityGraphAvailable", EntityGraphType.FETCH, new String[0]), graph); + + Assertions.assertThat(graph.getAttributeNodes()).isEmpty(); + } + /** * Lookup the {@link AttributeNode} with given {@literal nodeName} in the root of the given {@literal graph}. */