diff --git a/hibernate-core/src/main/java/org/hibernate/query/hql/internal/QualifiedJoinPathConsumer.java b/hibernate-core/src/main/java/org/hibernate/query/hql/internal/QualifiedJoinPathConsumer.java index e6c872e13501..597aa73107d8 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/hql/internal/QualifiedJoinPathConsumer.java +++ b/hibernate-core/src/main/java/org/hibernate/query/hql/internal/QualifiedJoinPathConsumer.java @@ -212,6 +212,10 @@ else if ( fetch ) { } } } + if ( !(subPathSource instanceof SqmJoinable) ) { + throw new SemanticException( "Joining on basic value elements is not supported", + ((SemanticQueryBuilder) creationState).getQuery() ); + } @SuppressWarnings("unchecked") final SqmJoinable joinSource = (SqmJoinable) subPathSource; return createJoin( lhs, joinType, alias, fetch, isTerminal, allowReuse, creationState, joinSource ); diff --git a/hibernate-core/src/main/java/org/hibernate/query/hql/internal/SemanticQueryBuilder.java b/hibernate-core/src/main/java/org/hibernate/query/hql/internal/SemanticQueryBuilder.java index 17b152e5642f..ebfa88c3c855 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/hql/internal/SemanticQueryBuilder.java +++ b/hibernate-core/src/main/java/org/hibernate/query/hql/internal/SemanticQueryBuilder.java @@ -436,6 +436,10 @@ public Stack getProcessingStateStack() { return processingStateStack; } + public String getQuery() { + return query; + } + // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Grammar rules