8484import org .hibernate .internal .CoreMessageLogger ;
8585import org .hibernate .internal .FilterAliasGenerator ;
8686import org .hibernate .internal .FilterHelper ;
87+ import org .hibernate .internal .util .ImmutableBitSet ;
8788import org .hibernate .internal .util .IndexedConsumer ;
8889import org .hibernate .internal .util .MarkerObject ;
8990import org .hibernate .internal .util .StringHelper ;
@@ -1734,14 +1735,21 @@ protected boolean initializeLazyProperty(
17341735 final EntityEntry entry ,
17351736 final int index ,
17361737 final Object propValue ) {
1737- setPropertyValue ( entity , lazyPropertyNumbers [index ], propValue );
1738- if ( entry .getLoadedState () != null ) {
1738+ final int propertyNumber = lazyPropertyNumbers [index ];
1739+ setPropertyValue ( entity , propertyNumber , propValue );
1740+ if ( entry .getMaybeLazySet () != null ) {
1741+ var bitSet = entry .getMaybeLazySet ().toBitSet ();
1742+ bitSet .set ( propertyNumber );
1743+ entry .setMaybeLazySet ( ImmutableBitSet .valueOf ( bitSet ) );
1744+ }
1745+ final var loadedState = entry .getLoadedState ();
1746+ if ( loadedState != null ) {
17391747 // object have been loaded with setReadOnly(true); HHH-2236
1740- entry . getLoadedState ()[ lazyPropertyNumbers [ index ] ] = lazyPropertyTypes [index ].deepCopy ( propValue , factory );
1748+ loadedState [ propertyNumber ] = lazyPropertyTypes [index ].deepCopy ( propValue , factory );
17411749 }
17421750 // If the entity has deleted state, then update that as well
17431751 if ( entry .getDeletedState () != null ) {
1744- entry .getDeletedState ()[lazyPropertyNumbers [ index ] ] = lazyPropertyTypes [index ].deepCopy ( propValue , factory );
1752+ entry .getDeletedState ()[propertyNumber ] = lazyPropertyTypes [index ].deepCopy ( propValue , factory );
17451753 }
17461754 return fieldName .equals ( lazyPropertyNames [index ] );
17471755 }
@@ -1763,6 +1771,11 @@ protected boolean initializeLazyProperty(
17631771 // Used by Hibernate Reactive
17641772 protected void initializeLazyProperty (Object entity , EntityEntry entry , Object propValue , int index , Type type ) {
17651773 setPropertyValue ( entity , index , propValue );
1774+ if ( entry .getMaybeLazySet () != null ) {
1775+ var bitSet = entry .getMaybeLazySet ().toBitSet ();
1776+ bitSet .set ( index );
1777+ entry .setMaybeLazySet ( ImmutableBitSet .valueOf ( bitSet ) );
1778+ }
17661779 final Object [] loadedState = entry .getLoadedState ();
17671780 if ( loadedState != null ) {
17681781 // object have been loaded with setReadOnly(true); HHH-2236
0 commit comments