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)
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);
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With