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 f21c8c2927
)
This commit is contained in:
parent
fd186a1dd5
commit
59ad417498
|
@ -32,4 +32,9 @@ public abstract class AbstractPostInsertGenerator
|
|||
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.SessionFactoryImplementor;
|
|||
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 @@ public abstract class AbstractEntityPersister
|
|||
// 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…
Reference in New Issue