Программисты JAVA общаются здесь
Anonymous
Критерии объединения JPA CriteriaBuilder в критерии дизъюнкции
Сообщение
Anonymous » 16 ноя 2024, 10:50
Мне нужно реплицировать этот запрос в код
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 = cq.from(Article.class);
List
predicates = new ArrayList();
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 andPredicate = new ArrayList();
for (String str : searchQuery.split(" ")) {
andPredicate.add(cb.like(article.get(Article_.description), "%" + str + "%"));
}
Как мне добавить этот andPredicate к моему предикату дизъюнкции? getExpressions().add(...) не принимает предикат в качестве параметра.
Спасибо
Подробнее здесь:
https://stackoverflow.com/questions/384 ... n-criteria
1731743415
Anonymous
Мне нужно реплицировать этот запрос в код [b]JPA CriteriaBuilder[/b]: [code].... 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%' ) ) [/code] и вот мой код: [code]... Root article = cq.from(Article.class); List predicates = new ArrayList(); 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 andPredicate = new ArrayList(); for (String str : searchQuery.split(" ")) { andPredicate.add(cb.like(article.get(Article_.description), "%" + str + "%")); } [/code] Как мне добавить этот andPredicate к моему предикату дизъюнкции? getExpressions().add(...) не принимает предикат в качестве параметра. Спасибо Подробнее здесь: [url]https://stackoverflow.com/questions/38400272/jpa-criteriabuilder-conjunction-criteria-into-a-disjunction-criteria[/url]