File tree Expand file tree Collapse file tree 2 files changed +23
-0
lines changed
hibernate-reactive-core/src/main/java/org/hibernate/reactive/session Expand file tree Collapse file tree 2 files changed +23
-0
lines changed Original file line number Diff line number Diff line change 1313import org .hibernate .LockOptions ;
1414import org .hibernate .UnknownProfileException ;
1515import org .hibernate .collection .spi .PersistentCollection ;
16+ import org .hibernate .engine .spi .EntityEntry ;
1617import org .hibernate .engine .spi .PersistenceContext ;
1718import org .hibernate .engine .spi .SessionImplementor ;
1819import org .hibernate .event .internal .MergeContext ;
@@ -68,6 +69,8 @@ public interface ReactiveSession extends ReactiveQueryExecutor {
6869
6970 CompletionStage <Void > reactiveAutoflush ();
7071
72+ CompletionStage <Void > reactiveForceFlush (EntityEntry entry );
73+
7174 CompletionStage <Void > reactiveRefresh (Object entity , LockOptions lockMode );
7275
7376 CompletionStage <Void > reactiveRefresh (Object child , IdentitySet refreshedAlready );
Original file line number Diff line number Diff line change @@ -898,6 +898,26 @@ public CompletionStage<Void> reactiveAutoflush() {
898898 return getHibernateFlushMode ().lessThan ( FlushMode .COMMIT ) ? voidFuture () : doFlush ();
899899 }
900900
901+ @ Override
902+ public CompletionStage <Void > reactiveForceFlush (EntityEntry entry ) {
903+ if ( log .isDebugEnabled () ) {
904+ log .debugf (
905+ "Flushing to force deletion of re-saved object: %s" ,
906+ MessageHelper .infoString ( entry .getPersister (), entry .getId (), getFactory () )
907+ );
908+ }
909+
910+ if ( getPersistenceContextInternal ().getCascadeLevel () > 0 ) {
911+ return CompletionStages .failedFuture ( new ObjectDeletedException (
912+ "deleted object would be re-saved by cascade (remove deleted object from associations)" ,
913+ entry .getId (),
914+ entry .getPersister ().getEntityName ()
915+ ) );
916+ }
917+ checkOpenOrWaitingForAutoClose ();
918+ return doFlush ();
919+ }
920+
901921 private CompletionStage <Void > doFlush () {
902922 checkTransactionNeededForUpdateOperation ( "no transaction is in progress" );
903923 pulseTransactionCoordinator ();
You can’t perform that action at this time.
0 commit comments