如何将多个日期之间的搜索与 Spring Data JPA 的 CrudRepository 结合起来?
Posted
技术标签:
【中文标题】如何将多个日期之间的搜索与 Spring Data JPA 的 CrudRepository 结合起来?【英文标题】:How to combine multiple date-between searches with CrudRepository of Spring Data JPA? 【发布时间】:2014-11-10 06:44:52 【问题描述】:spring-data 提供了一种通过定义方法名来生成 SQL 搜索的方法。
以下工作正常:
@Entity
public class Book
Date from, to;
//CrudRepository<Book>
findByFromDateBetween(Date departure, Date arrival);
但是为什么下面的方法不起作用呢?
findByFromDateBetweenAndToDateBetween(Date departure, Date arrival);
要连接两个日期搜索,我必须重复日期:
findByFromDateBetweenAndToDateBetween(Date departure, Date arrival, Date departure, Date arrival);
问题:是否可以重用参数?
【问题讨论】:
【参考方案1】:Between
关键字自然绑定了两个参数。因此绑定from子句后,参数列表就用完了,我们不知道第二个条件使用哪些参数。
手动定义的查询应该可以解决问题:
interface BookRepository extends Repository<Book, Integer>
@Query("select b from Book b " +
"where b.from between ?1 and ?2 and b.to between ?1 and ?2")
List<Book> findByDatesBetween(Date departure, Date arrival);
【讨论】:
以上是关于如何将多个日期之间的搜索与 Spring Data JPA 的 CrudRepository 结合起来?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Spring Data JPA 持久化 JSR-310 类型?
使用 Spring Data JPA 获取两个日期之间的记录
使用日期参数时的 Spring Data JPA 日期“之间”查询问题