使用querydsl,我遇到了一个问题,我需要生成一个case语句,其中包含不同数量的when / then语句和最终的else表达式。
正如here所述,我已经能够生成具有固定数量的when / then语句的case语句,很容易就像这样 -
Expression<String> cases = customer.annualSpending
.when(10000).then("Premier")
.when(5000).then("Gold")
.when(2000).then("Silver")
.otherwise("Bronze");
这是我已经尝试过但没有成功的方法 -
Map<BooleanBuilder,SimplePath<?>> caseExpressionMap = new LinkedHashMap<>();
CaseBuilder.Cases<?,?> caseExpression = null;
for(BooleanBuilder expression : caseExpressionMap.keySet()){
if(caseExpression!=null)
caseExpression = caseExpression.when(expression).then(caseExpressionMap.get(expression));
else
caseExpression = new CaseBuilder().when(expression).then(caseExpressionMap.get(expression));
}
cases=cases.otherwise(...)
我遇到了一些类型问题 -
该方法中的方法(捕获#19-of?) CaseBuilder.Case什么时候不是 适用于参数(SimplePath)
在这里感谢一些帮助。
答案 0 :(得分:0)
更改CaseBuilder的泛型完成了这项工作。这段代码可以使用 -
-p3