当前位置: 首页 > 知识库问答 >
问题:

CriteriaBuilder中的If语句

相洛华
2023-03-14

我有这样的想法:

    criteria.select(something.get("somethingId"))
            .where(builder.and(
                    builder.equal(something.get("firstColumn"), firstValue),
                    builder.equal(something.get("thirdColumn", thirdValue), 
            ));

并想做添加到像这样的地方:

secondValue != 0 ? builder.equal(something.get("secondColumn"), secondValue) : DONOTHING;

简而言之:如果secondValue的值不同于“0”,我不想设置生成器。相等(第二列)。如果可能的话,我想在构建器内部使用它,因为这个构建器非常长,所以我想避免代码重复。

问题是,如果条件不能在分号后为空,从另一方面来说,我不能在这个生成器表达式中使用正常的如果(秒值!=0)。

你能帮我吗?

共有1个答案

万高畅
2023-03-14

我发现构建JPA标准有用的一种模式是使用列表向其中添加谓词。这使您可以更轻松地有条件地添加其中一些:

List<Predicate> predicateList = new ArrayList<>();

predicateList.add(builder.equal(something.get("firstColumn"), firstValue));
predicateList.add(builder.equal(something.get("thirdColumn", thirdValue));
if(secondValue != 0) {
    predicateList.add(builder.equal(something.get("secondColumn", secondValue));
}

criteria.select(something.get("somethingId"))
        .where(predicateList.toArray(new Predicate[predicateList.size()]);

请注意,如果将多个谓词作为数组添加到javax的where方法中。坚持不懈标准CriteriaQuery它们将自动添加为连词,因此将它们全部包装在生成器中。而且不是必需的。

 类似资料:
  • 这节课我们来学习下程序中另外一个非常重要的语句:if。 1. 语法 if (判断条件布尔运算) { 条件成立后运行的语句 } 这里的条件判断采用了布尔运算,也就是真值和假值两种情况。当 if 后面放入的条件判断语句的执行最终结果为真的时候,就会执行花括号中的语句,如果条件语句最终的结果为假,那么就不会执行花括号 中的语句,程序会跳过花括号中的代码段,继续执行后面的代码。 这里给出了真值表,以供

  • 问题内容: 有没有办法在ng-click内放置条件?在这里,我希望如果存在任何表单错误,则不提交表单,但是随后出现了解析异常。 我尝试使用ng-disabled,但是我的验证插件无法正常工作,因为根本没有提交表单,因此不会触发。 问题答案: 不要在模板中放置任何条件表达式。 在控制器上执行此操作。 模板: 控制器:

  • 问题内容: i=0 for f in do echo “i value is $i” if [“$i” = “0”] then echo “here” i=$((i+1)) continue fi arr[i]=$f i=$((i+1)) done 在上面的bash脚本中,我在使用if语句时出现了一个错误,它看起来像这样 请指出我的错误。 问题答案: 采用 在bash,你需要周围的空间,并在条件

  • 问题内容: 当需要指定特定状态时,我需要更改渲染功能并运行一些子渲染功能, 例如: 如何在不更改场景的情况下实现这一点,我将使用标签动态更改内容。 问题答案: 根据 DOC : if-else语句在JSX中不起作用。这是因为JSX只是函数调用和对象构造的语法糖。 基本规则: JSX从根本上讲是syntactic sugar.。编译后,JSX表达式成为常规的JavaScript函数调用,并评估为Ja

  • 问题内容: 我正在寻找编写一个PostgreSQL查询来执行以下操作: 我已经试过这个查询,但是没有用 谢谢你 问题答案: 如PostgreSQL的文档中阐明在这里: SQL CASE表达式是通用条件表达式,类似于其他编程语言中的if / else语句。 专门回答您的问题的代码段:

  • 我想创建一个表,它要求用户首先输入。然后根据输入选择要添加的列。