Skip to content

Commit

Permalink
HHH-17606 Fix nested generic join path resolution
Browse files Browse the repository at this point in the history
  • Loading branch information
mbladel authored and beikov committed Jan 5, 2024
1 parent d41981e commit 7c5e419
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 11 deletions.
Expand Up @@ -178,15 +178,7 @@ private static SqmFrom<?, Object> createJoin(
boolean isTerminal,
boolean allowReuse,
SqmCreationState creationState) {
final SqmPathSource<?> referencedPathSource = lhs.getReferencedPathSource();
// We need to use referencedPathSource when it is not generic since the getResolvedModel() method would
// return the association attribute as a path source and for treated paths that might correspond to a
// different entity type (usually the first in alphabetical order) and not the correct treat target
final SqmPathSource<?> pathSource = referencedPathSource.isGeneric() ?
lhs.getResolvedModel() :
referencedPathSource;
//noinspection unchecked
final SqmPathSource<Object> subPathSource = (SqmPathSource<Object>) pathSource.getSubPathSource( name );
final SqmPathSource<?> subPathSource = lhs.getResolvedModel().getSubPathSource( name );
if ( allowReuse && !isTerminal ) {
for ( SqmJoin<?, ?> sqmJoin : lhs.getSqmJoins() ) {
if ( sqmJoin.getAlias() == null && sqmJoin.getReferencedPathSource() == subPathSource ) {
Expand Down
Expand Up @@ -161,8 +161,7 @@ public SqmPathSource<T> getModel() {
public SqmPathSource<?> getResolvedModel() {
final DomainType<?> lhsType;
final SqmPathSource<T> pathSource = getReferencedPathSource();
if ( pathSource.isGeneric() && ( lhsType = getLhs().getReferencedPathSource()
.getSqmPathType() ) instanceof ManagedDomainType ) {
if ( pathSource.isGeneric() && ( lhsType = getLhs().getResolvedModel().getSqmPathType() ) instanceof ManagedDomainType ) {
final PersistentAttribute<?, ?> concreteAttribute = ( (ManagedDomainType<?>) lhsType ).findConcreteGenericAttribute(
pathSource.getPathName()
);
Expand Down

0 comments on commit 7c5e419

Please sign in to comment.