【问题标题】:JPA findAll(spec,Sort)JPA findAll(规格,排序)
【发布时间】:2011-12-26 16:44:53
【问题描述】:

我有这个代码来获取两个日期之间的所有交易。我想得到一个 desc 排序列表。有哪些可能性?

@Override
public List<Transaction> searchBySubmitDate(final Date startDate, 
                                            final Date endDate) {
    return transactionRepository.findAll(new Specification<Transaction>() {
        @Override
        public Predicate toPredicate(Root<Transaction> transaction, 
                                     CriteriaQuery<?> q, CriteriaBuilder cb) {
            Predicate between = cb.between(transaction.get(Transaction_.dateSubmit), startDate, endDate);

            return between;
        }
    });

【问题讨论】:

    标签: jpa spring-data


    【解决方案1】:
    @Override
        public List<Transaction> searchBySubmitDate(final Date startDate, 
                                                    final Date endDate) {
            return transactionRepository.findAll(new Specification<Transaction>() {
                @Override
                public Predicate toPredicate(Root<Transaction> transaction, 
                                             CriteriaQuery<?> q, CriteriaBuilder cb) {
                    Predicate between = cb.between(transaction.get(Transaction_.dateSubmit), startDate, endDate);
    
                    return between;
                }
            },new Sort(Direction.DESC,"dateSubmit"));
    

    【讨论】:

      【解决方案2】:

      存储库有another method taking a Sort as additional argument。使用适当的 Sort 实例调用此方法。

      【讨论】:

      • 我试过它不起作用,我可能会以错误的方式使用它。列表 列表=新的 ArrayList(); list.add("dateSubmit");排序 sort= new Sort(Direction.DESC, list);
      • 它生成什么 SQL 查询?
      【解决方案3】:

      我想我会留下一个更新的答案,因为它已经 7 年了。这就是我们现在的做法:

      interface TransactionRepository extends Repository<Transaction, Long> {
          @Query(value = "SELECT * FROM Transaction AS t " +
              "WHERE t.date >= :since AND t.date <= :until", nativeQuery = true)
          public List<Transaction> findTransactionBetween(@Param("since" String since, 
                                                          @Param("until" String until);
      }
      

      您可以在Spring JPA documentation阅读更多内容

      【讨论】:

        猜你喜欢
        • 2018-11-17
        • 1970-01-01
        • 2021-12-18
        • 2017-08-19
        • 1970-01-01
        • 1970-01-01
        • 2018-11-25
        • 2021-07-02
        • 2020-01-11
        相关资源
        最近更新 更多