hibernate QueryDSL:CaseBuilder不明确的方法调用和意外的AST节点

yfjy0ee7  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(129)

我的项目使用springBootVersion 2.5.7,querydsl 5.0.0
有一些代码:

.or(
    Expressions.cases()
            .when(intervalTo.isNotNull())
            .then(
                    enablePath
                            .after(intervalFrom)
                            .and(enablePath.before(intervalTo))
            )
            .otherwise(
                    enablePath.after(intervalFrom)
            )
);

字符串
1.在**.then**表达式中,我使用模糊方法调用时出现编译错误。(then(Predicate)and then(ComparableExpression))
1.在将参数转换为 predicate 后,我有错误:
:6:588:意外AST节点:case antlr.NoViableAltException:意外AST节点:在org。 hibernate 总部内在的安特尔HqlSqlBaseWalker。logicalExpr(HqlSqlBaseWalker.java:2174)at org. hibernate hql内在的安特尔HqlSqlBaseWalker。logicalExpr(HqlSqlBaseWalker.java:2119)at org. hibernate hql内部的角HqlSqlBaseWalker。logicalExpr(HqlSqlBaseWalker.java:2094)at org. hibernate hql内部的安特尔HqlSqlBaseWalker。whereClause(HqlSqlBaseWalker.java:832) hibernate 总部内在的安特尔HqlSqlBaseWalker。query(HqlSqlBaseWalker.java:626)
我错在哪里?先谢了

5gfr0r5j

5gfr0r5j1#

这是我失败,case必须返回一些值:

.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)
);

字符串

相关问题