我需要将此查询复制到 JPA CriteriaBuilder 代码中:
....
where
article.client_id = 1
and article.price > 0
and (
article.code like '%this is statement%'
or article.oem_code like '%this is statement%'
or (
article.description like '%this%'
and article.description like '%is%'
and article.description like '%statement%'
)
)
这是我的代码:
...
Root<Article> article = cq.from(Article.class);
List<Predicate> predicates = new ArrayList<Predicate>();
predicates.add(cb.equal(article.get(Article_.clientId), filter.getClientId()));
predicates.add(cb.greaterThan(article.get(Article_.price), BigDecimal.ZERO));
String searchQuery = filter.getSearchQuery();
Predicate disjunction = cb.disjunction();
disjunction.getExpressions().add(cb.like(article.get(Article_.code), "%" + searchQuery + "%"));
disjunction.getExpressions().add(cb.like(article.get(Article_.oem_code), "%" + searchQuery + "%"));
List<Predicate> andPredicate = new ArrayList<Predicate>();
for (String str : searchQuery.split(" ")) {
andPredicate.add(cb.like(article.get(Article_.description), "%" + str + "%"));
}
现在,如何将其添加andPredicate
到析取谓词中?在getExpressions().add(...)
不采取Predicate
为PARAM。
谢谢
所以这就是我所做的,并且看起来工作正常:
...
Predicate pr1 = cb.like(article.get(Article_.code), "%" + searchQuery + "%");
Predicate pr2 = cb.like(article.get(Article_.oem_code), "%" + searchQuery + "%");
Predicate pr3 = cb.conjunction();
for (String str : busquedaSplit) {
Predicate newPredicate = cb.like(article.get(Article_.description), "%" + str + "%");
pr3 = cb.and(pr3, newPredicate);
}
disjunction = cb.or(pr1, pr2, pr3);
predicates.add(disjunction);
此代码不断要求用户提供双精度值,直到用户输入空行。当用户输入非双精度值(如字符串)时,将显示“无效输入”消息。目前,即使用户输入空行,也会显示无效的输入消息,我理解原因。当我输入空行时,获得无效输入不显示的最佳方法是什么。我不确定是否有办法使用try-catch,或者我只需要使用其他东西。
我有一个有许多记录的表。它有以下结构: 表(col1、col2、col3、col4、col5、col6): 还有很多很多其他的行。 因此,我想要一张桌子: 表(col1,col2,col3,col4_1,col4_2,col4_3,col5_1,col5_2,col5_3,col6_1,col6_2,col6_3): 换句话说:表中的某些部分具有相同的,但不同的。每个相同的行数在1-3之间变化(事
问题内容: 我的文件夹上有多个csv文件。列标题不同,但列数据相同。 括号内的数字是实际的列名。项目(67)67是列名 因此,忽略字符串Item,仅考虑int()中的int并执行操作。 样本文件:https : //drive.google.com/open?id=1q7c1AqCRKRufSVh– 9o0W6rdz28QyBGa 说明: 驱动器上的文件应附加在一起。基于列名称的“启用条件”。如果
问题内容: 我完全相信我的问题很简单,但我无法使用流进行处理(如果有一种方法也可以不使用流进行处理,那么它也会有所帮助)假设我们有此用户列表 并假设我们的List 中包含以下数据 在此预期的结果它因为名字,姓氏和类型列表中出现了两次只是合并是常见的结果,而不会错过任何领域的 预期成果 问题答案: 您可以创建一个包含三个字段的键类,例如 分组 这些可以用来对您的用户进行分组 这些列表中的每一个都可以
假设我有2个数据帧: DF1: Col1 | Col2 | Col3 XCN000370/17-18C|XCN0003711718C|0003971718 DF2 Col1 | Col2 | Col3 XCN0003711718C|XCN0003711718C|0003971718 我希望它们像这样合并: 首次匹配Col1(DF1)和Col1(DF2) 在保持不匹配的情况下,将Col1(DF1)与
我正在使用下面的XSLT- 可以有人请检查XSLT代码,帮助我得到想要的结果。当前,我得到以下错误数组([type]=>2[message]=>XSLTProcessor::TransformToxML():没有与此对象关联的样式表[file]=>/var/www/html/online-toolz.com/functions/xslt.php[line]=>26)错误:XSLTProcessor