Spring JPA 存储库方法查询名称之间

4 java spring jpql spring-data spring-data-jpa

updated我想获取日期或created日期位于日期范围之间的记录。实体类如下:

@Entity
public class Order {

  @Id
  @Setter(AccessLevel.NONE)
  private String orderId;

  @Temporal(TemporalType.TIMESTAMP)
  @Column(name = "created_at", nullable = false)
  private Date created;

  @Temporal(TemporalType.TIMESTAMP)
  @Column(name = "updated_at", nullable = false)
  private Date updated;

}
Run Code Online (Sandbox Code Playgroud)

其存储库如下:

public interface OrderRepository
    extends PagingAndSortingRepository<Order, String>, QuerydslPredicateExecutor<Order> {
  public Page<Order> findByCreatedBetweenOrUpdatedBetween(Date startDate, Date endDate,
      Pageable pageRequest);
}
Run Code Online (Sandbox Code Playgroud)

问题是当我使用它时,我收到以下错误:

引起原因:java.lang.IllegalArgumentException:没有可用于更新部分的参数 BETWEEN (2):[IsBetween,Between] NEVER。在 org.springframework.util.Assert.isTrue(Assert.java:116) 在 org.springframework.data.jpa.repository.query.ParameterMetadataProvider.next(ParameterMetadataProvider.java:123) 在 org.springframework.data.jpa.repository .query.JpaQueryCreator$PredicateBuilder.build(JpaQueryCreator.java:247) 在 org.springframework.data.jpa.repository.query.JpaQueryCreator.toPredicate(JpaQueryCreator.java:206) 在 org.springframework.data.jpa.repository.query .JpaQueryCreator.create(JpaQueryCreator.java:119) 在 org.springframework.data.jpa.repository.query.JpaQueryCreator.create(JpaQueryCreator.java:56)

Mac*_*ski 5

您需要提供 4 个日期。

前两个用于创建范围,后两个用于更新范围:

public interface OrderRepository
    extends PagingAndSortingRepository<Order, String>, QuerydslPredicateExecutor<Order> {
  public Page<Order> findByCreatedBetweenOrUpdatedBetween(
           Date startDateCreated, Date endDateCreated
         , Date startDateUpdated, Date endDateUpdated
         , Pageable pageRequest);
}
Run Code Online (Sandbox Code Playgroud)