HHH-16191 Fix issues uncovered by recent not-found fetchin changes
This commit is contained in:
parent
6f5102ffd2
commit
c67dbc0013
|
@ -670,7 +670,7 @@ public class HbmResultSetMappingDescriptor implements NamedResultSetMappingDescr
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
fetchable = (Fetchable) ( (FetchableContainer) fetchable ).findSubPart( propertyPathParts[i], null );
|
fetchable = (Fetchable) ( (FetchableContainer) fetchable.getPartMappingType() ).findSubPart( propertyPathParts[i], null );
|
||||||
navigablePath = navigablePath.append( fetchable.getFetchableName() );
|
navigablePath = navigablePath.append( fetchable.getFetchableName() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1829,7 +1829,7 @@ public abstract class AbstractEntityPersister
|
||||||
return fetches.build();
|
return fetches.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected boolean isSelectable(FetchParent fetchParent, Fetchable fetchable) {
|
public boolean isSelectable(FetchParent fetchParent, Fetchable fetchable) {
|
||||||
if ( fetchParent instanceof EmbeddableResultGraphNode ) {
|
if ( fetchParent instanceof EmbeddableResultGraphNode ) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -4159,6 +4159,11 @@ public abstract class AbstractEntityPersister
|
||||||
return entityMetamodel.getCascadeStyles();
|
return entityMetamodel.getCascadeStyles();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isPropertySelectable(int propertyNumber) {
|
||||||
|
return propertySelectable[propertyNumber];
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final Class<?> getMappedClass() {
|
public final Class<?> getMappedClass() {
|
||||||
return this.getMappedJavaType().getJavaTypeClass();
|
return this.getMappedJavaType().getJavaTypeClass();
|
||||||
|
|
|
@ -674,6 +674,10 @@ public interface EntityPersister extends EntityMappingType, RootTableGroupProduc
|
||||||
*/
|
*/
|
||||||
CascadeStyle[] getPropertyCascadeStyles();
|
CascadeStyle[] getPropertyCascadeStyles();
|
||||||
|
|
||||||
|
default boolean isPropertySelectable(int propertyNumber) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the identifier type
|
* Get the identifier type
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -29,6 +29,7 @@ import org.hibernate.metamodel.mapping.ModelPart;
|
||||||
import org.hibernate.metamodel.mapping.NonAggregatedIdentifierMapping;
|
import org.hibernate.metamodel.mapping.NonAggregatedIdentifierMapping;
|
||||||
import org.hibernate.metamodel.mapping.internal.BasicValuedCollectionPart;
|
import org.hibernate.metamodel.mapping.internal.BasicValuedCollectionPart;
|
||||||
import org.hibernate.metamodel.mapping.internal.SingleAttributeIdentifierMapping;
|
import org.hibernate.metamodel.mapping.internal.SingleAttributeIdentifierMapping;
|
||||||
|
import org.hibernate.persister.entity.AbstractEntityPersister;
|
||||||
import org.hibernate.spi.EntityIdentifierNavigablePath;
|
import org.hibernate.spi.EntityIdentifierNavigablePath;
|
||||||
import org.hibernate.spi.NavigablePath;
|
import org.hibernate.spi.NavigablePath;
|
||||||
import org.hibernate.query.results.dynamic.DynamicFetchBuilderLegacy;
|
import org.hibernate.query.results.dynamic.DynamicFetchBuilderLegacy;
|
||||||
|
@ -428,6 +429,11 @@ public class DomainResultCreationStateImpl
|
||||||
|
|
||||||
private Consumer<Fetchable> createFetchableConsumer(FetchParent fetchParent, ImmutableFetchList.Builder fetches) {
|
private Consumer<Fetchable> createFetchableConsumer(FetchParent fetchParent, ImmutableFetchList.Builder fetches) {
|
||||||
return fetchable -> {
|
return fetchable -> {
|
||||||
|
final FetchableContainer parentMappingType = fetchParent.getReferencedMappingContainer();
|
||||||
|
if ( parentMappingType instanceof AbstractEntityPersister
|
||||||
|
&& !( ( (AbstractEntityPersister) parentMappingType ).isSelectable( fetchParent, fetchable ) ) ) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
final String fetchableName = fetchable.getFetchableName();
|
final String fetchableName = fetchable.getFetchableName();
|
||||||
Map.Entry<String, NavigablePath> currentEntry;
|
Map.Entry<String, NavigablePath> currentEntry;
|
||||||
if ( relativePathStack.isEmpty() ) {
|
if ( relativePathStack.isEmpty() ) {
|
||||||
|
|
|
@ -187,7 +187,7 @@ public class DynamicResultBuilderEntityStandard
|
||||||
final NavigablePath elementNavigablePath;
|
final NavigablePath elementNavigablePath;
|
||||||
if ( fetchable instanceof PluralAttributeMapping ) {
|
if ( fetchable instanceof PluralAttributeMapping ) {
|
||||||
collectionTableGroup = fromClauseAccess.getTableGroup( navigablePath );
|
collectionTableGroup = fromClauseAccess.getTableGroup( navigablePath );
|
||||||
elementNavigablePath = navigablePath.append( fetchable.getPartName() );
|
elementNavigablePath = navigablePath.append( CollectionPart.Nature.ELEMENT.getName() );
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
collectionTableGroup = null;
|
collectionTableGroup = null;
|
||||||
|
|
|
@ -323,7 +323,12 @@ public class ResultSetMappingProcessor implements SQLQueryParser.ParserContext {
|
||||||
resultBuilderEntity.addProperty( loadable.getIdentifierPropertyName(), identifierAliases );
|
resultBuilderEntity.addProperty( loadable.getIdentifierPropertyName(), identifierAliases );
|
||||||
}
|
}
|
||||||
|
|
||||||
for ( String propertyName : loadable.getPropertyNames() ) {
|
final String[] propertyNames = loadable.getPropertyNames();
|
||||||
|
for ( int i = 0; i < propertyNames.length; i++ ) {
|
||||||
|
if ( !loadable.isPropertySelectable( i ) ) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
final String propertyName = propertyNames[i];
|
||||||
final String[] columnAliases = loadable.getSubclassPropertyColumnAliases( propertyName, suffix );
|
final String[] columnAliases = loadable.getSubclassPropertyColumnAliases( propertyName, suffix );
|
||||||
final Type propertyType = loadable.getPropertyType( propertyName );
|
final Type propertyType = loadable.getPropertyType( propertyName );
|
||||||
addFetchBuilder(
|
addFetchBuilder(
|
||||||
|
|
Loading…
Reference in New Issue