mirror of
https://github.com/hibernate/hibernate-orm
synced 2025-02-17 16:44:57 +00:00
HHH-12968 - Flush is not flushing inserts for inherited tables before a select within a transaction
Extract IdentityGenerator batch support validation logic (cherry picked from commit f21c8c292759466151a5adf1d11a445f2d5c4ba8)
This commit is contained in:
parent
fd186a1dd5
commit
59ad417498
@ -32,4 +32,9 @@ public boolean supportsBulkInsertionIdentifierGeneration() {
|
||||
public String determineBulkInsertionIdentifierGenerationSelectFragment(Dialect dialect) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsJdbcBatchInserts() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -7,7 +7,6 @@
|
||||
package org.hibernate.id;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import javax.persistence.GeneratedValue;
|
||||
|
||||
import org.hibernate.HibernateException;
|
||||
@ -60,4 +59,13 @@ public interface IdentifierGenerator {
|
||||
* @throws HibernateException Indicates trouble generating the identifier
|
||||
*/
|
||||
Serializable generate(SharedSessionContractImplementor session, Object object) throws HibernateException;
|
||||
|
||||
/**
|
||||
* Check if JDBC batch inserts are supported.
|
||||
*
|
||||
* @return JDBC batch inserts are supported.
|
||||
*/
|
||||
default boolean supportsJdbcBatchInserts() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -83,7 +83,6 @@
|
||||
import org.hibernate.engine.spi.SharedSessionContractImplementor;
|
||||
import org.hibernate.engine.spi.ValueInclusion;
|
||||
import org.hibernate.id.IdentifierGenerator;
|
||||
import org.hibernate.id.IdentityGenerator;
|
||||
import org.hibernate.id.PostInsertIdentifierGenerator;
|
||||
import org.hibernate.id.PostInsertIdentityPersister;
|
||||
import org.hibernate.id.insert.Binder;
|
||||
@ -3146,7 +3145,9 @@ protected void insert(
|
||||
// TODO : shouldn't inserts be Expectations.NONE?
|
||||
final Expectation expectation = Expectations.appropriateExpectation( insertResultCheckStyles[j] );
|
||||
final int jdbcBatchSizeToUse = session.getConfiguredJdbcBatchSize();
|
||||
final boolean useBatch = expectation.canBeBatched() && jdbcBatchSizeToUse > 1 && !( getIdentifierGenerator() instanceof IdentityGenerator );
|
||||
final boolean useBatch = expectation.canBeBatched() &&
|
||||
jdbcBatchSizeToUse > 1 &&
|
||||
getIdentifierGenerator().supportsJdbcBatchInserts();
|
||||
|
||||
if ( useBatch && inserBatchKey == null ) {
|
||||
inserBatchKey = new BasicBatchKey(
|
||||
|
Loading…
x
Reference in New Issue
Block a user