【发布时间】:2019-06-11 09:10:01
【问题描述】:
我有一个像下面这样的实体:
@Entity
public class Order {
@Id
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;
@PrePersist
protected void onCreate() {
this.created = new Date();
this.updated = this.created;
}
@PreUpdate
protected void onUpdate() {
this.updated = new Date();
}
}
我必须找到在特定日期范围内创建或更新日期的所有订单。为此,我在我的存储库中定义了以下方法:
public interface OrderRepository extends PagingAndSortingRepository<Order, String>,
QuerydslPredicateExecutor<Order> {
public Page<Order> findByCreatedBetweenOrUpdatedBetween(Date startCreatedDate,
Date endCreatedDate, Date startUpdatedDate, Date endUptedDate, Pageable pageRequest);
}
我的问题是,我可以只检查Updated_date 而不是像下面这样的创建日期和更新日期吗?
public Page<Order> findByUpdatedBetween(Date startUpdatedDate, Date endUptedDate, Pageable pageRequest);
我观察到updated_date 在插入与created_date 相同值的行时更新。如果我只检查 updated_date 提供的日期范围,我是否有可能错过任何记录。
【问题讨论】:
-
你不是在
@PrePersistthis.updated = this.created;中设置更新日期
标签: java jpa spring-data-jpa spring-data jpql