When referencing a join node in an “on”-clause the lookup of the join node causes a StackOverflowError. This worked in Hibernate 5 and blocks us from migrating to Hibernate 6. A reproducer project is attached. I adapted the reproducer of https://hibernate.atlassian.net/browse/HHH-16968 to demonstrate the problem. Example Stacktrace excerpt:
at org.hibernate.query.sqm.SemanticQueryWalker.visitSetJoin(SemanticQueryWalker.java:211) ~[hibernate-core-6.3.0.CR1.jar:6.3.0.CR1]
at org.hibernate.query.sqm.tree.domain.SqmSetJoin.accept(SqmSetJoin.java:85) ~[hibernate-core-6.3.0.CR1.jar:6.3.0.CR1]
at org.hibernate.query.sqm.tree.jpa.ParameterCollector.lambda$visitComparisonPredicate$14(ParameterCollector.java:272) ~[hibernate-core-6.3.0.CR1.jar:6.3.0.CR1]
at org.hibernate.query.sqm.tree.jpa.ParameterCollector.withTypeInference(ParameterCollector.java:147) ~[hibernate-core-6.3.0.CR1.jar:6.3.0.CR1]
at org.hibernate.query.sqm.tree.jpa.ParameterCollector.visitComparisonPredicate(ParameterCollector.java:272) ~[hibernate-core-6.3.0.CR1.jar:6.3.0.CR1]
at org.hibernate.query.sqm.tree.predicate.SqmComparisonPredicate.accept(SqmComparisonPredicate.java:104) ~[hibernate-core-6.3.0.CR1.jar:6.3.0.CR1]
at org.hibernate.query.sqm.spi.BaseSemanticQueryWalker.visitQualifiedAttributeJoin(BaseSemanticQueryWalker.java:296) ~[hibernate-core-6.3.0.CR1.jar:6.3.0.CR1]
at org.hibernate.query.sqm.SemanticQueryWalker.visitSetJoin(SemanticQueryWalker.java:211) ~[hibernate-core-6.3.0.CR1.jar:6.3.0.CR1]
at org.hibernate.query.sqm.tree.domain.SqmSetJoin.accept(SqmSetJoin.java:85) ~[hibernate-core-6.3.0.CR1.jar:6.3.0.CR1]
at org.hibernate.query.sqm.tree.jpa.ParameterCollector.lambda$visitComparisonPredicate$14(ParameterCollector.java:272) ~[hibernate-core-6.3.0.CR1.jar:6.3.0.CR1]
at org.hibernate.query.sqm.tree.jpa.ParameterCollector.withTypeInference(ParameterCollector.java:147) ~[hibernate-core-6.3.0.CR1.jar:6.3.0.CR1]
at org.hibernate.query.sqm.tree.jpa.ParameterCollector.visitComparisonPredicate(ParameterCollector.java:272) ~[hibernate-core-6.3.0.CR1.jar:6.3.0.CR1]
at org.hibernate.query.sqm.tree.predicate.SqmComparisonPredicate.accept(SqmComparisonPredicate.java:104) ~[hibernate-core-6.3.0.CR1.jar:6.3.0.CR1]
at org.hibernate.query.sqm.spi.BaseSemanticQueryWalker.visitQualifiedAttributeJoin(BaseSemanticQueryWalker.java:296) ~[hibernate-core-6.3.0.CR1.jar:6.3.0.CR1]
at org.hibernate.query.sqm.SemanticQueryWalker.visitSetJoin(SemanticQueryWalker.java:211) ~[hibernate-core-6.3.0.CR1.jar:6.3.0.CR1]
at org.hibernate.query.sqm.tree.domain.SqmSetJoin.accept(SqmSetJoin.java:85) ~[hibernate-core-6.3.0.CR1.jar:6.3.0.CR1]
at org.hibernate.query.sqm.tree.jpa.ParameterCollector.lambda$visitComparisonPredicate$14(ParameterCollector.java:272) ~[hibernate-core-6.3.0.CR1.jar:6.3.0.CR1]
at org.hibernate.query.sqm.tree.jpa.ParameterCollector.withTypeInference(ParameterCollector.java:147) ~[hibernate-core-6.3.0.CR1.jar:6.3.0.CR1]
at org.hibernate.query.sqm.tree.jpa.ParameterCollector.visitComparisonPredicate(ParameterCollector.java:272) ~[hibernate-core-6.3.0.CR1.jar:6.3.0.CR1]
at org.hibernate.query.sqm.tree.predicate.SqmComparisonPredicate.accept(SqmComparisonPredicate.java:104) ~[hibernate-core-6.3.0.CR1.jar:6.3.0.CR1]
at org.hibernate.query.sqm.spi.BaseSemanticQueryWalker.visitQualifiedAttributeJoin(BaseSemanticQueryWalker.java:296) ~[hibernate-core-6.3.0.CR1.jar:6.3.0.CR1]
at org.hibernate.query.sqm.SemanticQueryWalker.visitSetJoin(SemanticQueryWalker.java:211) ~[hibernate-core-6.3.0.CR1.jar:6.3.0.CR1]
at org.hibernate.query.sqm.tree.domain.SqmSetJoin.accept(SqmSetJoin.java:85) ~[hibernate-core-6.3.0.CR1.jar:6.3.0.CR1]
|