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 d09b48affd62..bfe15832b68d 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 @@ -207,6 +207,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 be7845bc1ab4..0a528c0a7418 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 @@ -414,6 +414,10 @@ public Stack getProcessingStateStack() { return processingStateStack; } + public String getQuery() { + return query; + } + private NodeBuilder nodeBuilder() { return creationContext.getNodeBuilder(); }