Мне нужно построить следующую инструкцию запроса в моем слое Spring JPA.
select * from PAYMENTS sellerpaym0_
where trunc(sellerpaym0_.PAYMENT_DATE)=TO_DATE('2019-05-26','yyyy-MM-dd'));
В моем коде Java у меня есть
public class MySpecification<E> implements Specification<E> {
private SearchCriteria criteria;
@Override
public Predicate toPredicate(Root<E> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
if (criteria.getOp().equalsIgnoreCase("=")) {
return builder.equal(root.get(criteria.getKey()), criteria.getValue());
}
}
public static class MySpecificationBuilder {
private String key;
private String op;
private String value;
public static MySpecification spec(String key, String op, Comparable value) {
return new MySpecification(new SearchCriteria(key, op, value));
}
}
Метод toPredicate отлично работает, когда оператор равен "=", и мне не нужно никаких пользовательских манипуляций.
Однако, когда мне нужно представить SQL
где trunc (sellerpaym0_.PAYMENT_DATE) = TO_DATE ('2019-05-26', 'гггг-мм-дд'));
Я не могу понять, как это можно сделать.
Любая помощь будет высоко ценится.