Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取特定日期和时间后的数据的条件查询_Java_Sql_Hibernate_Jpa_Hibernate Criteria - Fatal编程技术网

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)私有字符串日期;