首页 > 解决方案 > 如何在querydsl中将子查询作为numberExpression返回

问题描述

不是错误]

NumberExpression<Integer> print = smfpHistory.appType.when("Print").then(1).otherwise(0);

错误1]

NumberExpression<Integer> print = smfpHistory.appType.when("Print").then(SQLExpressions.
select(smfpSizeHistory.simplexmono.sum())
.from(smfpSizeHistory)
.where(smfpSizeHistory.uuid.eq(smfpHistory.uuid))).otherwise(0);

错误2]

NumberExpression<Integer> printMonoSimplex = (NumberExpression<Integer>) smfpHistory.appType.when("Print").then(SQLExpressions.
            select(smfpSizeHistory.simplexmono.sum())
            .from(smfpSizeHistory)
            .where(smfpSizeHistory.uuid.eq(smfpHistory.uuid))
            ).otherwise(0);

即使您在上面的错误 1 ​​中强制转换为 NumberExpression,也会发生错误。

如何在querydsl中将子查询作为numberExpression返回?

标签: querydsl

解决方案


您没有分享实际错误,但我假设提供的代码根本无法为您的域编译。

您可以通过将其中的任何内容包装Expression<? extends Number>在 a 中来转换它。NumberExpressionExpressions.asNumber(expression)


推荐阅读