Skip to content

Commit 34cc763

Browse files
committed
HHH-18835 Use multi-table insert also for generators that don't support bulk inserts
1 parent 36f0dc7 commit 34cc763

File tree

2 files changed

+6
-4
lines changed

2 files changed

+6
-4
lines changed

hibernate-core/src/main/java/org/hibernate/persister/entity/AbstractEntityPersister.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4819,10 +4819,11 @@ private boolean isSubselect() {
48194819

48204820
private boolean generatorNeedsMultiTableInsert() {
48214821
final var generator = getGenerator();
4822-
if ( generator instanceof BulkInsertionCapableIdentifierGenerator
4822+
if ( generator instanceof BulkInsertionCapableIdentifierGenerator bulkInsertionCapableGenerator
48234823
&& generator instanceof OptimizableGenerator optimizableGenerator ) {
48244824
final var optimizer = optimizableGenerator.getOptimizer();
4825-
return optimizer != null && optimizer.getIncrementSize() > 1;
4825+
return optimizer != null && optimizer.getIncrementSize() > 1
4826+
|| !bulkInsertionCapableGenerator.supportsBulkInsertionIdentifierGeneration();
48264827
}
48274828
else {
48284829
return false;

hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmQueryImpl.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -625,10 +625,11 @@ private boolean useMultiTableInsert(EntityPersister persister, SqmInsertStatemen
625625
boolean useMultiTableInsert = persister.hasMultipleTables();
626626
if ( !useMultiTableInsert && !isSimpleValuesInsert( sqmInsert, persister ) ) {
627627
final var identifierGenerator = persister.getGenerator();
628-
if ( identifierGenerator instanceof BulkInsertionCapableIdentifierGenerator
628+
if ( identifierGenerator instanceof BulkInsertionCapableIdentifierGenerator bulkInsertionCapableGenerator
629629
&& identifierGenerator instanceof OptimizableGenerator optimizableGenerator ) {
630630
final var optimizer = optimizableGenerator.getOptimizer();
631-
if ( optimizer != null && optimizer.getIncrementSize() > 1 ) {
631+
if ( optimizer != null && optimizer.getIncrementSize() > 1
632+
|| !bulkInsertionCapableGenerator.supportsBulkInsertionIdentifierGeneration() ) {
632633
useMultiTableInsert = !hasIdentifierAssigned( sqmInsert, persister );
633634
}
634635
}

0 commit comments

Comments
 (0)