HHH-17885 Fix for same named attribute of different Embedded uses same selection expression
This commit is contained in:
parent
1fe26bc7f4
commit
bcae77fb32
|
@ -305,7 +305,7 @@ public abstract class AbstractEmbeddableMapping implements EmbeddableMappingType
|
|||
temporalPrecision = null;
|
||||
nullable = true;
|
||||
isLob = false;
|
||||
selectablePath = basicValue.createSelectablePath( bootPropertyDescriptor.getName() );
|
||||
selectablePath = new SelectablePath( determineEmbeddablePrefix() + bootPropertyDescriptor.getName() );
|
||||
}
|
||||
|
||||
attributeMapping = MappingModelCreationHelper.buildBasicAttributeMapping(
|
||||
|
@ -457,6 +457,14 @@ public abstract class AbstractEmbeddableMapping implements EmbeddableMappingType
|
|||
return true;
|
||||
}
|
||||
|
||||
protected String determineEmbeddablePrefix() {
|
||||
NavigableRole root = getNavigableRole().getParent();
|
||||
while ( !root.isRoot() ) {
|
||||
root = root.getParent();
|
||||
}
|
||||
return getNavigableRole().getFullPath().substring( root.getFullPath().length() + 1 ) + ".";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getNumberOfFetchables() {
|
||||
return getAttributeMappings().size();
|
||||
|
|
|
@ -403,7 +403,7 @@ public class EmbeddableMappingTypeImpl extends AbstractEmbeddableMapping impleme
|
|||
temporalPrecision = null;
|
||||
isLob = false;
|
||||
nullable = bootPropertyDescriptor.isOptional();
|
||||
selectablePath = basicValue.createSelectablePath( bootPropertyDescriptor.getName() );
|
||||
selectablePath = new SelectablePath( determineEmbeddablePrefix() + bootPropertyDescriptor.getName() );
|
||||
}
|
||||
attributeMapping = MappingModelCreationHelper.buildBasicAttributeMapping(
|
||||
bootPropertyDescriptor.getName(),
|
||||
|
|
|
@ -106,10 +106,6 @@ public final class NavigableRole implements DotIdentifierSequence, Serializable
|
|||
return fullPath;
|
||||
}
|
||||
|
||||
public boolean isRoot() {
|
||||
return parent == null && StringHelper.isEmpty( localName );
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return getClass().getSimpleName() + '[' + fullPath + ']';
|
||||
|
|
Loading…
Reference in New Issue