From c370425721929ca7c145ddfae63336533247ae8d Mon Sep 17 00:00:00 2001 From: Oliver Drotbohm Date: Tue, 11 Apr 2023 17:18:25 +0200 Subject: [PATCH] Avoid strong proxy checks in test case for identifier access. Under still to clarify circumstances a class processed by Hibernate might result in proxies *not* created for a otherwise proxied relationship. So far, our tests have relied on those cases always return a proxy reliably but some optimizations in Hibernate 6.2 (likely [0]) don't allow creating proxies reliably. Until we find a better way to reliably create a proxy we back off from strictly checking whether we deal with a proxy. Related tickets: #2899. [0] https://hibernate.atlassian.net/browse/HHH-15790 --- .../JpaMetamodelMappingContextIntegrationTests.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/spring-data-jpa/src/test/java/org/springframework/data/jpa/mapping/JpaMetamodelMappingContextIntegrationTests.java b/spring-data-jpa/src/test/java/org/springframework/data/jpa/mapping/JpaMetamodelMappingContextIntegrationTests.java index 127abcedd..5febb4b46 100644 --- a/spring-data-jpa/src/test/java/org/springframework/data/jpa/mapping/JpaMetamodelMappingContextIntegrationTests.java +++ b/spring-data-jpa/src/test/java/org/springframework/data/jpa/mapping/JpaMetamodelMappingContextIntegrationTests.java @@ -17,16 +17,15 @@ package org.springframework.data.jpa.mapping; import static org.assertj.core.api.Assertions.*; -import java.util.Collections; - import jakarta.persistence.EntityManager; +import java.util.Collections; + import org.hibernate.proxy.HibernateProxy; import org.hibernate.proxy.LazyInitializer; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; - import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.ComponentScan.Filter; import org.springframework.context.annotation.Configuration; @@ -145,8 +144,10 @@ class JpaMetamodelMappingContextIntegrationTests { IdentifierAccessor accessor = entity.getIdentifierAccessor(loadedProduct); assertThat(accessor.getIdentifier()).isEqualTo(category.getProduct().getId()); - assertThat(loadedProduct).isInstanceOf(HibernateProxy.class); - assertThat(((HibernateProxy) loadedProduct).getHibernateLazyInitializer().isUninitialized()).isTrue(); + + if (loadedProduct instanceof HibernateProxy proxy) { + assertThat(proxy.getHibernateLazyInitializer().isUninitialized()).isTrue(); + } status.setRollbackOnly();