Spring JPA标准-where子句中的trunc和to_date

时间:2019-06-03 19:58:47

标签: spring-data-jpa hibernate-criteria

我需要在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','yyyy-MM-dd'));

我不知道该怎么做。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

使用CriteriaBuilder.function方法,docs