HHH-17876 Changes for Hibernate Reactive 2.3

Change the scope of some methods and add some getters, so that
subclasses in Hibernate Reactive can reuse some of the existing code.
This commit is contained in:
Davide D'Alto 2024-03-22 10:33:43 +01:00 committed by Christian Beikov
parent 6dc7f8328a
commit 12b3afced0
9 changed files with 52 additions and 13 deletions

View File

@ -50,7 +50,7 @@ public MutationOperation createMergeOperation(OptionalTableUpdate optionalTableU
); );
} }
private void renderUpsertStatement(OptionalTableUpdate optionalTableUpdate) { protected void renderUpsertStatement(OptionalTableUpdate optionalTableUpdate) {
// template: // template:
// //
// merge into [table] as t // merge into [table] as t

View File

@ -211,4 +211,8 @@ public JdbcParametersList getJdbcParameters() {
public EntityMappingType getEntityDescriptor() { public EntityMappingType getEntityDescriptor() {
return entityDescriptor; return entityDescriptor;
} }
public JdbcOperationQuerySelect getJdbcSelect() {
return jdbcSelect;
}
} }

View File

@ -506,6 +506,7 @@ public Fetch generateFetch(
fetchablePath, fetchablePath,
this, this,
collectionTableGroup, collectionTableGroup,
referencedPropertyName != null,
fetchParent, fetchParent,
creationState creationState
); );
@ -570,13 +571,14 @@ protected Fetch buildEagerCollectionFetch(
NavigablePath fetchedPath, NavigablePath fetchedPath,
PluralAttributeMapping fetchedAttribute, PluralAttributeMapping fetchedAttribute,
TableGroup collectionTableGroup, TableGroup collectionTableGroup,
boolean needsCollectionKeyResult,
FetchParent fetchParent, FetchParent fetchParent,
DomainResultCreationState creationState) { DomainResultCreationState creationState) {
return new EagerCollectionFetch( return new EagerCollectionFetch(
fetchedPath, fetchedPath,
fetchedAttribute, fetchedAttribute,
collectionTableGroup, collectionTableGroup,
referencedPropertyName != null, needsCollectionKeyResult,
fetchParent, fetchParent,
creationState creationState
); );

View File

@ -2048,7 +2048,7 @@ public String generateSelectVersionString() {
return select.addRestriction( rootTableKeyColumnNames ).toStatementString(); return select.addRestriction( rootTableKeyColumnNames ).toStatementString();
} }
private GeneratedValuesProcessor createGeneratedValuesProcessor( protected GeneratedValuesProcessor createGeneratedValuesProcessor(
EventType timing, EventType timing,
List<AttributeMapping> generatedAttributes) { List<AttributeMapping> generatedAttributes) {
return new GeneratedValuesProcessor( this, generatedAttributes, timing, getFactory() ); return new GeneratedValuesProcessor( this, generatedAttributes, timing, getFactory() );
@ -3433,16 +3433,12 @@ private void doLateInit() {
insertGeneratedProperties = initInsertGeneratedProperties( insertGeneratedAttributes ); insertGeneratedProperties = initInsertGeneratedProperties( insertGeneratedAttributes );
updateGeneratedProperties = initUpdateGeneratedProperties( updateGeneratedAttributes ); updateGeneratedProperties = initUpdateGeneratedProperties( updateGeneratedAttributes );
insertDelegate = createInsertDelegate();
updateDelegate = createUpdateDelegate();
if ( isIdentifierAssignedByInsert() ) { if ( isIdentifierAssignedByInsert() ) {
final OnExecutionGenerator generator = (OnExecutionGenerator) getGenerator();
insertDelegate = generator.getGeneratedIdentifierDelegate( this );
identitySelectString = getIdentitySelectString( factory.getJdbcServices().getDialect() ); identitySelectString = getIdentitySelectString( factory.getJdbcServices().getDialect() );
} }
else {
insertDelegate = GeneratedValuesHelper.getGeneratedValuesDelegate( this, INSERT );
}
updateDelegate = GeneratedValuesHelper.getGeneratedValuesDelegate( this, UPDATE );
if ( hasInsertGeneratedProperties() ) { if ( hasInsertGeneratedProperties() ) {
insertGeneratedValuesProcessor = createGeneratedValuesProcessor( INSERT, insertGeneratedAttributes ); insertGeneratedValuesProcessor = createGeneratedValuesProcessor( INSERT, insertGeneratedAttributes );
@ -3469,6 +3465,18 @@ private void doLateInit() {
sqlVersionSelectString = generateSelectVersionString(); sqlVersionSelectString = generateSelectVersionString();
} }
protected GeneratedValuesMutationDelegate createInsertDelegate() {
if ( isIdentifierAssignedByInsert() ) {
final OnExecutionGenerator generator = (OnExecutionGenerator) getGenerator();
return generator.getGeneratedIdentifierDelegate( this );
}
return GeneratedValuesHelper.getGeneratedValuesDelegate( this, INSERT );
}
protected GeneratedValuesMutationDelegate createUpdateDelegate() {
return GeneratedValuesHelper.getGeneratedValuesDelegate( this, UPDATE );
}
private EntityTableMapping findTableMapping(String tableName) { private EntityTableMapping findTableMapping(String tableName) {
for ( int i = 0; i < tableMappings.length; i++ ) { for ( int i = 0; i < tableMappings.length; i++ ) {
if ( tableMappings[i].getTableName().equals( tableName ) ) { if ( tableMappings[i].getTableName().equals( tableName ) ) {

View File

@ -117,7 +117,7 @@ protected MutationOperationGroup createOperationGroup(ValuesAnalysis valuesAnaly
} }
} }
void handleValueGeneration( protected void handleValueGeneration(
AttributeMapping attributeMapping, AttributeMapping attributeMapping,
MutationGroupBuilder mutationGroupBuilder, MutationGroupBuilder mutationGroupBuilder,
OnExecutionGenerator generator) { OnExecutionGenerator generator) {

View File

@ -212,7 +212,10 @@ public <T> MappingModelExpressible<T> getResolvedMappingModelType(SqmParameter<T
return ( (Number) list.get( 0 ) ).intValue(); return ( (Number) list.get( 0 ) ).intValue();
} }
private Expression createCountStar( /**
* Used by Hibernate Raective
*/
protected Expression createCountStar(
SessionFactoryImplementor factory, SessionFactoryImplementor factory,
MultiTableSqmMutationConverter sqmConverter) { MultiTableSqmMutationConverter sqmConverter) {
final SqmExpression<?> arg = new SqmStar( factory.getNodeBuilder() ); final SqmExpression<?> arg = new SqmStar( factory.getNodeBuilder() );

View File

@ -113,7 +113,7 @@ public abstract class AbstractEntityInitializer extends AbstractFetchParentAcces
private EntityKey entityKey; private EntityKey entityKey;
private Object version; private Object version;
private Object entityInstance; private Object entityInstance;
private Object entityInstanceForNotify; protected Object entityInstanceForNotify;
protected State state = State.UNINITIALIZED; protected State state = State.UNINITIALIZED;
private boolean isOwningInitializer; private boolean isOwningInitializer;
private Object[] resolvedEntityState; private Object[] resolvedEntityState;

View File

@ -264,6 +264,10 @@ protected void setProcessed(boolean processed) {
this.processed = processed; this.processed = processed;
} }
protected boolean isProcessed() {
return processed;
}
protected Object getIdentifier() { protected Object getIdentifier() {
return identifier; return identifier;
} }

View File

@ -197,4 +197,22 @@ public EntityResultImpl getEntityResult() {
public void collectValueIndexesToCache(BitSet valueIndexes) { public void collectValueIndexesToCache(BitSet valueIndexes) {
entityResult.collectValueIndexesToCache( valueIndexes ); entityResult.collectValueIndexesToCache( valueIndexes );
} }
/*
* BEGIN: For Hibernate Reactive
*/
protected DomainResult<?> getKeyResult() {
return keyResult;
}
protected NotFoundAction getNotFoundAction() {
return notFoundAction;
}
protected String getSourceAlias() {
return sourceAlias;
}
/*
* END: Hibernate Reactive: make sure values are accessible from subclass
*/
} }