Skip to content

Commit 3ecaa32

Browse files
committed
HHH-19116 Return actual path source for singular attribute joins
This fixes the check for `fk()` function argument type
1 parent d914cdd commit 3ecaa32

File tree

4 files changed

+14
-3
lines changed

4 files changed

+14
-3
lines changed

hibernate-core/src/main/java/org/hibernate/query/hql/internal/QualifiedJoinPathConsumer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ private AttributeJoinDelegate resolveAlias(String identifier, boolean isTerminal
192192
if ( allowReuse ) {
193193
if ( !isTerminal ) {
194194
for ( SqmJoin<?, ?> sqmJoin : lhs.getSqmJoins() ) {
195-
if ( sqmJoin.getAlias() == null && sqmJoin.getReferencedPathSource() == subPathSource ) {
195+
if ( sqmJoin.getAlias() == null && sqmJoin.getModel() == subPathSource ) {
196196
return sqmJoin;
197197
}
198198
}

hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmUtil.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -390,7 +390,7 @@ public static <T, A> SqmAttributeJoin<T, A> findCompatibleFetchJoin(
390390
SqmPathSource<A> pathSource,
391391
SqmJoinType requestedJoinType) {
392392
for ( final SqmJoin<T, ?> join : sqmFrom.getSqmJoins() ) {
393-
if ( join.getReferencedPathSource() == pathSource ) {
393+
if ( join.getModel() == pathSource ) {
394394
final SqmAttributeJoin<T, ?> attributeJoin = (SqmAttributeJoin<T, ?>) join;
395395
if ( attributeJoin.isFetched() ) {
396396
final SqmJoinType joinType = join.getSqmJoinType();

hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/AbstractSqmAttributeJoin.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ public <X> X accept(SemanticQueryWalker<X> walker) {
110110
@Override
111111
public PersistentAttribute<? super L, ?> getAttribute() {
112112
//noinspection unchecked
113-
return (PersistentAttribute<? super L, ?>) getReferencedPathSource();
113+
return (PersistentAttribute<? super L, ?>) getModel();
114114
}
115115

116116
@Override

hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmSingularJoin.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import org.hibernate.metamodel.model.domain.SingularPersistentAttribute;
1212
import org.hibernate.metamodel.model.domain.TreatableDomainType;
1313
import org.hibernate.query.sqm.SemanticQueryWalker;
14+
import org.hibernate.query.sqm.SqmPathSource;
1415
import org.hibernate.spi.NavigablePath;
1516
import org.hibernate.query.sqm.NodeBuilder;
1617
import org.hibernate.query.sqm.tree.SqmCopyContext;
@@ -80,6 +81,16 @@ public SqmSingularJoin<O, T> copy(SqmCopyContext context) {
8081
return path;
8182
}
8283

84+
@Override
85+
public SqmPathSource<T> getNodeType() {
86+
return getReferencedPathSource();
87+
}
88+
89+
@Override
90+
public SqmPathSource<T> getReferencedPathSource() {
91+
return getModel().getPathSource();
92+
}
93+
8394
@Override
8495
public SingularPersistentAttribute<O, T> getModel() {
8596
return (SingularPersistentAttribute<O, T>) super.getNodeType();

0 commit comments

Comments
 (0)