Revert "HHH-16959 Fail to batch delete entities with nested embeddeds"

This reverts commit 8a644d8436.
This commit is contained in:
Andrea Boriero 2023-07-27 10:42:47 +02:00
parent 8a644d8436
commit 1df44f7416
4 changed files with 11 additions and 41 deletions

View File

@ -70,7 +70,6 @@ public abstract class AbstractMutationCoordinator {
protected BatchKeyAccess resolveBatchKeyAccess(boolean dynamicUpdate, SharedSessionContractImplementor session) {
if ( !dynamicUpdate
&& !entityPersister().optimisticLockStyle().isAllOrDirty()
&& session.getTransactionCoordinator() != null
&& session.getTransactionCoordinator().isTransactionActive() ) {
return this::getBatchKey;

View File

@ -25,8 +25,6 @@ import org.hibernate.metamodel.mapping.SelectableMapping;
import org.hibernate.persister.entity.AbstractEntityPersister;
import org.hibernate.sql.model.MutationOperationGroup;
import org.hibernate.sql.model.MutationType;
import org.hibernate.sql.model.ast.ColumnValueBinding;
import org.hibernate.sql.model.ast.ColumnValueBindingList;
import org.hibernate.sql.model.ast.builder.MutationGroupBuilder;
import org.hibernate.sql.model.ast.builder.RestrictedTableMutationBuilder;
import org.hibernate.sql.model.ast.builder.TableDeleteBuilder;
@ -436,25 +434,17 @@ public class DeleteCoordinator extends AbstractMutationCoordinator {
Object loadedValue) {
final RestrictedTableMutationBuilder<?, ?> tableMutationBuilder =
mutationGroupBuilder.findTableDetailsBuilder( attribute.getContainingTableExpression() );
if ( tableMutationBuilder != null ) {
final ColumnValueBindingList optimisticLockBindings = tableMutationBuilder.getOptimisticLockBindings();
if ( optimisticLockBindings != null ) {
attribute.breakDownJdbcValues(
loadedValue,
(valueIndex, value, jdbcValueMapping) -> {
final ColumnValueBinding valueBinding = optimisticLockBindings.createValueBinding(
jdbcValueMapping.getSelectableName(),
value == null ? null : jdbcValueMapping.getWriteExpression(),
jdbcValueMapping.getJdbcMapping()
);
if ( !tableMutationBuilder.getKeyRestrictionBindings().contains( valueBinding ) ) {
optimisticLockBindings.add( valueBinding );
}
if ( tableMutationBuilder != null && tableMutationBuilder.getOptimisticLockBindings() != null ) {
attribute.breakDownJdbcValues(
loadedValue,
(valueIndex, value, jdbcValueMapping) -> {
if ( value != null && !tableMutationBuilder.getKeyRestrictionBindings().contains( value ) ) {
tableMutationBuilder.getOptimisticLockBindings().consume( valueIndex, value, jdbcValueMapping );
}
,
session
);
}
}
,
session
);
}
// else there is no actual delete statement for that table,
// generally indicates we have an on-delete=cascade situation

View File

@ -6,8 +6,6 @@
*/
package org.hibernate.sql.model.ast;
import java.util.Objects;
import org.hibernate.sql.ast.tree.expression.ColumnReference;
/**
@ -40,21 +38,4 @@ public class ColumnValueBinding {
public String toString() {
return "ColumnValueBinding(" + valueExpression + ")";
}
@Override
public boolean equals(Object o) {
if ( this == o ) {
return true;
}
if ( o == null || getClass() != o.getClass() ) {
return false;
}
ColumnValueBinding that = (ColumnValueBinding) o;
return Objects.equals( columnReference, that.columnReference );
}
@Override
public int hashCode() {
return Objects.hash( columnReference );
}
}

View File

@ -54,7 +54,7 @@ public class ColumnValueBindingList extends ArrayList<ColumnValueBinding> implem
add( createValueBinding( columnName, columnWriteFragment, jdbcMapping ) );
}
public ColumnValueBinding createValueBinding(
protected ColumnValueBinding createValueBinding(
String columnName,
String customWriteExpression,
JdbcMapping jdbcMapping) {