diff --git a/hibernate-core/src/main/java/org/hibernate/internal/util/collections/AbstractPagedArray.java b/hibernate-core/src/main/java/org/hibernate/internal/util/collections/AbstractPagedArray.java index 976fd704cd72..eff754a70d8e 100644 --- a/hibernate-core/src/main/java/org/hibernate/internal/util/collections/AbstractPagedArray.java +++ b/hibernate-core/src/main/java/org/hibernate/internal/util/collections/AbstractPagedArray.java @@ -176,7 +176,9 @@ protected Page getOrCreateEntryPage(int index) { public void clear() { for ( Page entryPage : elementPages ) { - entryPage.clear(); + if ( entryPage != null ) { + entryPage.clear(); + } } elementPages.clear(); elementPages.trimToSize(); diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/util/InstanceIdentityMapTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/util/InstanceIdentityMapTest.java index 1c5f79fcd403..74323dc122b5 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/util/InstanceIdentityMapTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/util/InstanceIdentityMapTest.java @@ -6,6 +6,7 @@ import org.hibernate.engine.spi.InstanceIdentity; import org.hibernate.internal.util.collections.InstanceIdentityMap; +import org.hibernate.testing.orm.junit.Jira; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; @@ -99,4 +100,15 @@ public void testSets() { assertThat( testMap.values() ).hasSize( 100 ).containsAll( map.values() ); assertThat( testMap.entrySet() ).hasSize( 100 ).containsAll( map.entrySet() ); } + + @Test + @Jira(value = "https://hibernate.atlassian.net/browse/HHH-19582") + public void testNullPage() { + final TestInstance i1 = new TestInstance( 9999 ); + testMap.put( i1, "instance_X" ); + + testMap.clear(); + assertThat( testMap ).isEmpty(); + } + }