From ab1f4ac238f8682b25df6acac11abb8fe79caa77 Mon Sep 17 00:00:00 2001 From: Gavin King Date: Thu, 20 Feb 2025 11:21:47 +0100 Subject: [PATCH] promote getSession() up to PersistentCollection for the benefit of Hibernate Reactive, which currently casts to AbstractPersistentCollection --- .../collection/spi/AbstractPersistentCollection.java | 6 +----- .../hibernate/collection/spi/PersistentArrayHolder.java | 6 +++--- .../hibernate/collection/spi/PersistentCollection.java | 9 ++++++++- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/hibernate-core/src/main/java/org/hibernate/collection/spi/AbstractPersistentCollection.java b/hibernate-core/src/main/java/org/hibernate/collection/spi/AbstractPersistentCollection.java index 218fe6ad923a..3bd30d5a705e 100644 --- a/hibernate-core/src/main/java/org/hibernate/collection/spi/AbstractPersistentCollection.java +++ b/hibernate-core/src/main/java/org/hibernate/collection/spi/AbstractPersistentCollection.java @@ -897,11 +897,7 @@ public void afterRowInsert(CollectionPersister persister, Object entry, int i) t @Override public abstract Collection getOrphans(Serializable snapshot, String entityName) throws HibernateException; - /** - * Get the session currently associated with this collection. - * - * @return The session - */ + @Override public final SharedSessionContractImplementor getSession() { return session; } diff --git a/hibernate-core/src/main/java/org/hibernate/collection/spi/PersistentArrayHolder.java b/hibernate-core/src/main/java/org/hibernate/collection/spi/PersistentArrayHolder.java index 755cf16840c6..8e70a9ab1fd4 100644 --- a/hibernate-core/src/main/java/org/hibernate/collection/spi/PersistentArrayHolder.java +++ b/hibernate-core/src/main/java/org/hibernate/collection/spi/PersistentArrayHolder.java @@ -252,9 +252,9 @@ public boolean needsInserting(Object entry, int i, Type elemType) throws Hiberna public boolean needsUpdating(Object entry, int i, Type elemType) throws HibernateException { final Serializable sn = getSnapshot(); return i < Array.getLength( sn ) - && Array.get( sn, i ) != null - && Array.get( array, i ) != null - && elemType.isDirty( Array.get( array, i ), Array.get( sn, i ), getSession() ); + && Array.get( sn, i ) != null + && Array.get( array, i ) != null + && elemType.isDirty( Array.get( array, i ), Array.get( sn, i ), getSession() ); } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/collection/spi/PersistentCollection.java b/hibernate-core/src/main/java/org/hibernate/collection/spi/PersistentCollection.java index 89379aa9e93d..014cb299b9d3 100644 --- a/hibernate-core/src/main/java/org/hibernate/collection/spi/PersistentCollection.java +++ b/hibernate-core/src/main/java/org/hibernate/collection/spi/PersistentCollection.java @@ -11,6 +11,7 @@ import org.hibernate.HibernateException; import org.hibernate.Incubating; +import org.hibernate.Internal; import org.hibernate.engine.spi.InstanceIdentity; import org.hibernate.engine.spi.SharedSessionContractImplementor; import org.hibernate.metamodel.mapping.PluralAttributeMapping; @@ -359,7 +360,6 @@ default boolean needsUpdating( * * @see #injectLoadedState */ - @SuppressWarnings("UnusedReturnValue") boolean endRead(); /** @@ -511,6 +511,13 @@ default boolean isDirectlyProvidedCollection(Object collection) { void initializeEmptyCollection(CollectionPersister persister); + /** + * Get the session currently associated with this collection. + * Declared here for use by Hibernate Reactive. + */ + @Internal + SharedSessionContractImplementor getSession(); + /** * Is the collection newly instantiated? *