My project with springBootVersion 2.5.7, querydsl 5.0.0
have some code:
.or(
Expressions.cases()
.when(intervalTo.isNotNull())
.then(
enablePath
.after(intervalFrom)
.and(enablePath.before(intervalTo))
)
.otherwise(
enablePath.after(intervalFrom)
)
);
<AST>:6:588: unexpected AST node: case antlr.NoViableAltException: unexpected AST node: case at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:2174) at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:2119) at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:2094) at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.whereClause(HqlSqlBaseWalker.java:832) at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:626)
What's my mistake? thank in advance
it was my fail, case must return some value:
.or(
Expressions.cases()
.when(intervalTo.isNotNull())
.then(
Expressions.cases().when(enablePath.after(intervalFrom)
.and(enablePath.before(intervalTo))
).then(1)
.otherwise(0)
)
.otherwise(
Expressions.cases().when(enablePath.after(intervalFrom)).then(1)
.otherwise(0)
).eq(1)
);