diff --git a/hibernate-core/src/main/java/org/hibernate/dialect/lock/PessimisticForceIncrementLockingStrategy.java b/hibernate-core/src/main/java/org/hibernate/dialect/lock/PessimisticForceIncrementLockingStrategy.java index 13c79b0c59..287c038463 100644 --- a/hibernate-core/src/main/java/org/hibernate/dialect/lock/PessimisticForceIncrementLockingStrategy.java +++ b/hibernate-core/src/main/java/org/hibernate/dialect/lock/PessimisticForceIncrementLockingStrategy.java @@ -48,7 +48,7 @@ public class PessimisticForceIncrementLockingStrategy implements LockingStrategy } final EntityEntry entry = session.getPersistenceContextInternal().getEntry( object ); final EntityPersister persister = entry.getPersister(); - final Object nextVersion = persister.forceVersionIncrement( entry.getId(), entry.getVersion(), session ); + final Object nextVersion = persister.forceVersionIncrement( entry.getId(), entry.getVersion(), false, session ); entry.forceLocked( object, nextVersion ); } diff --git a/hibernate-core/src/main/java/org/hibernate/engine/spi/ActionQueue.java b/hibernate-core/src/main/java/org/hibernate/engine/spi/ActionQueue.java index be4f39f782..b5567e47cc 100644 --- a/hibernate-core/src/main/java/org/hibernate/engine/spi/ActionQueue.java +++ b/hibernate-core/src/main/java/org/hibernate/engine/spi/ActionQueue.java @@ -546,6 +546,8 @@ public class ActionQueue { // Execute completion actions only in transaction owner (aka parent session). if ( beforeTransactionProcesses != null ) { beforeTransactionProcesses.beforeTransactionCompletion(); + // `beforeTransactionCompletion()` can have added batch operations (e.g. to increment entity version) + session.getJdbcCoordinator().executeBatch(); } } } diff --git a/hibernate-core/src/main/java/org/hibernate/event/internal/DefaultPostLoadEventListener.java b/hibernate-core/src/main/java/org/hibernate/event/internal/DefaultPostLoadEventListener.java index c1006d290c..70b51e943e 100644 --- a/hibernate-core/src/main/java/org/hibernate/event/internal/DefaultPostLoadEventListener.java +++ b/hibernate-core/src/main/java/org/hibernate/event/internal/DefaultPostLoadEventListener.java @@ -8,7 +8,6 @@ package org.hibernate.event.internal; import org.hibernate.AssertionFailure; -import org.hibernate.LockMode; import org.hibernate.action.internal.EntityIncrementVersionProcess; import org.hibernate.action.internal.EntityVerifyVersionProcess; import org.hibernate.classic.Lifecycle; @@ -18,7 +17,6 @@ import org.hibernate.event.spi.PostLoadEvent; import org.hibernate.event.spi.PostLoadEventListener; import org.hibernate.jpa.event.spi.CallbackRegistry; import org.hibernate.jpa.event.spi.CallbackRegistryConsumer; -import org.hibernate.persister.entity.EntityPersister; /** * We do 2 things here: