Я пишу код с помощью JPA Технические характеристики:
Snippet1:
Specification.where(withTopics())
.and(withCar())
.and(withInsurance())
// how to add order by
Где каждый метод условия имеет структуру, такую как:
public static Specification<Page> withCar(String type) {
return new Specification<Page>() {
@Override
public Predicate toPredicate(Root<Page> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
return // logic return cb
}
};
}
Я хочу добавьте заказ по условиям.
Я написал заказ по выражениям:
public static Specification<Page> orderByConditions(String input1, String input2) {
return new Specification<Page>() {
@Override
public Predicate toPredicate(Root<Page> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
Expression<Object> cases = cb.selectCase()
.when(cb.equal(cb.lower(root.get("carn_ame")), inputTopic.toLowerCase()), 1)
.when(cb.like(cb.lower(root.get("insurance_name")), "%" + inputTitle.toLowerCase() + "%"), 2)
.otherwise(3);
Order order = cb.desc(cases);
cb.createQuery().orderBy(order);
// what to return
}
}
}
Что я должен вернуть из моего orderByConditions()
, чтобы я мог применить его к своим спецификациям в Snippet1 ?
Но как мне добавить его в мои спецификации?