Java 获取特定日期和时间后的数据的条件查询
我使用的条件查询如下:我想在我过去的时间和日期之后获取预订。但现在我在我过去的相同日期之前获取预订。请帮助Java 获取特定日期和时间后的数据的条件查询,java,sql,hibernate,jpa,hibernate-criteria,Java,Sql,Hibernate,Jpa,Hibernate Criteria,我使用的条件查询如下:我想在我过去的时间和日期之后获取预订。但现在我在我过去的相同日期之前获取预订。请帮助 @GET @Path("/getReservationByUserIdAndTypeAndDateTime/{userid}/{type}/{date}/{time}") public List<Reservation> getReservationByAndUserIdAndTypeAndDateTime(@PathParam("userid
@GET
@Path("/getReservationByUserIdAndTypeAndDateTime/{userid}/{type}/{date}/{time}")
public List<Reservation> getReservationByAndUserIdAndTypeAndDateTime(@PathParam("userid") int uid, @PathParam("type") int tid,@PathParam("date") Date date,@PathParam("time") Time time) {
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<Reservation> criteria = builder.createQuery(Reservation.class);
Root<Reservation> r = criteria.from(Reservation.class);
TypedQuery<Reservation> query = em.createQuery(
criteria.select(r).where(new Predicate[]{
builder.equal(r.get(Reservation_.usersId), uid),
builder.equal(r.get(Reservation_.reservationsType), tid),
builder.greaterThanOrEqualTo(builder.concat(r.get(Reservation_.date), " "+r.get(Reservation_.time)), date.toString()+" "+time.toString())}));
return query.getResultList();
}
@GET
@路径(“/getReservationByUserIdAndTypeAndDateTime/{userid}/{type}/{date}/{time}”)
公共列表GetReservationByAndUserId和TypeAndDateTime(@PathParam(“userid”)int-uid、@PathParam(“type”)int-tid、@PathParam(“date”)日期日期、@PathParam(“time”)时间){
CriteriaBuilder=em.getCriteriaBuilder();
CriteriaQuery criteria=builder.createQuery(Reservation.class);
根r=标准.from(Reservation.class);
TypedQuery query=em.createQuery(
条件。选择(r)。其中(新谓词[]){
builder.equal(r.get(Reservation\u.usersId),uid),
同等建筑商(r.get(保留uu.reservationsType),tid),
builder.greaterThanOrEqualTo(builder.concat(r.get(Reservation_u.date),“+r.get(Reservation_u.time)),date.toString()+“+time.toString())});
返回query.getResultList();
}
不建议比较格式为字符串的日期和时间,结果可能取决于格式。最好在预订
类中有一个唯一的日期
字段:
@Temporal(TIMESTAMP) Date date;
并在查询中使用日期比较:
builder.greaterThanOrEqualTo(r.get(Reservation_.date), date)
这样可以省略
getReservationByAndUserId和TypeAndDateTime
方法中的time
参数,由于date
参数将同时包含日期和时间。您能否显示Reservation
类的date
和time
字段的映射?我刚刚添加了两个字段。。日期和时间作为字符串并创建getter和setter..@Column(nullable=false,length=10)私有字符串日期;