我有这样的想法:
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)。
你能帮我吗?
我发现构建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语句。 专门回答您的问题的代码段:
我想创建一个表,它要求用户首先输入。然后根据输入选择要添加的列。