【问题标题】:spring jpa criteria - trunc and to_date on the where clausespring jpa 标准 - where 子句上的 trunc 和 to_date
【发布时间】:2019-06-03 19:58:47
【问题描述】:

我需要在我的 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'));

我无法理解如何做到这一点。

任何帮助将不胜感激。

【问题讨论】:

    标签: spring-data-jpa hibernate-criteria


    【解决方案1】:

    使用CriteriaBuilder.function方法,docs

    【讨论】:

    • 这非常接近仅链接的答案,但此处并未受到好评。考虑通过添加一个显示如何使用它的 sn-p 来改进它。我认为只需致电function 就足够了。欢迎来到 SO。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-13
    • 2016-10-11
    • 2017-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多