Spring jpa критерий - trunc и to_date в предложении where - PullRequest
0 голосов
/ 03 июня 2019

Мне нужно построить следующую инструкцию запроса в моем слое 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', 'гггг-мм-дд'));

Я не могу понять, как это можно сделать.

Любая помощь будет высоко ценится.

1 Ответ

1 голос
/ 04 июня 2019

Использовать CriteriaBuilder.function метод, документы

...