Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Spring JPA repository method query name for between

I want to fetch the records for which either updated Date or created Date lie between a date range. The entity class is like below:

@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;

}

The repository on it is below:

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

Issue is when I use this, I get below error:

Caused by: java.lang.IllegalArgumentException: No parameter available for part updated BETWEEN (2): [IsBetween, Between] NEVER. at org.springframework.util.Assert.isTrue(Assert.java:116) at org.springframework.data.jpa.repository.query.ParameterMetadataProvider.next(ParameterMetadataProvider.java:123) at org.springframework.data.jpa.repository.query.JpaQueryCreator$PredicateBuilder.build(JpaQueryCreator.java:247) at org.springframework.data.jpa.repository.query.JpaQueryCreator.toPredicate(JpaQueryCreator.java:206) at org.springframework.data.jpa.repository.query.JpaQueryCreator.create(JpaQueryCreator.java:119) at org.springframework.data.jpa.repository.query.JpaQueryCreator.create(JpaQueryCreator.java:56)


1 Answers

You need to provide 4 dates.

First two for the Create Between and second two for the Updated Between:

public interface OrderRepository
    extends PagingAndSortingRepository<Order, String>, QuerydslPredicateExecutor<Order> {
  public Page<Order> findByCreatedBetweenOrUpdatedBetween(
           Date startDateCreated, Date endDateCreated
         , Date startDateUpdated, Date endDateUpdated
         , Pageable pageRequest);
}
like image 92
Maciej Kowalski Avatar answered Oct 17 '25 07:10

Maciej Kowalski



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!