Skip to content

Commit e574f88

Browse files
committed
HHH-18536 - Support implicit "this" alias in HQL
1 parent 08bd466 commit e574f88

File tree

2 files changed

+10
-3
lines changed

2 files changed

+10
-3
lines changed

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

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
import org.hibernate.jpa.spi.JpaCompliance;
1717
import org.hibernate.metamodel.model.domain.BasicDomainType;
1818
import org.hibernate.metamodel.model.domain.JpaMetamodel;
19-
import org.hibernate.query.criteria.JpaCrossJoin;
2019
import org.hibernate.query.SemanticException;
20+
import org.hibernate.query.criteria.JpaCrossJoin;
2121
import org.hibernate.query.hql.HqlLogging;
2222
import org.hibernate.query.hql.spi.SqmCreationProcessingState;
2323
import org.hibernate.query.hql.spi.SqmPathRegistry;
@@ -254,6 +254,15 @@ else if ( parentRegistered instanceof SqmEntityJoin<?,?> ) {
254254
}
255255
}
256256

257+
final boolean onlyOneFrom = sqmFromByPath.size() == 1;
258+
if ( onlyOneFrom && localAlias.equals( "this" ) ) {
259+
final SqmRoot<?> root = (SqmRoot<?>) sqmFromByPath.entrySet().iterator().next().getValue();
260+
if ( root.getAlias() == null ) {
261+
//noinspection unchecked
262+
return (X) root;
263+
}
264+
}
265+
257266
return null;
258267
}
259268

hibernate-core/src/test/java/org/hibernate/orm/test/query/hql/thisalias/HQLThisTest.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@
1313

1414
@SessionFactory
1515
@DomainModel(annotatedClasses = HQLThisTest.This.class)
16-
@FailureExpected( jiraKey = "HHH-18536", reason = "Support implicit \"this\" alias in HQL" )
17-
@Jira( "https://hibernate.atlassian.net/browse/HHH-18536" )
1816
public class HQLThisTest {
1917
@Test
2018
void test(SessionFactoryScope scope) {

0 commit comments

Comments
 (0)