Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.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
如何在hibernate中检查时间间隔_Hibernate - Fatal编程技术网

如何在hibernate中检查时间间隔

如何在hibernate中检查时间间隔,hibernate,Hibernate,这个查询在任何情况下都可以正常工作,例如,除了一个条件 StartDate 2017-04-17 09:00:00和endDate 2017-04-17 10:00:00:00将认为它是正确的,如果输入StartDate 2017-04-17 09:05:00和endDate 2017-04-17 09:50:00将不允许它是正确的,但如果我输入StartDate 2017-04-17 10:30:00和endDate 2017-04-17 011:30:00之间的时间,则应该允许它,因为时间只

这个查询在任何情况下都可以正常工作,例如,除了一个条件 StartDate 2017-04-17 09:00:00和endDate 2017-04-17 10:00:00:00将认为它是正确的,如果输入StartDate 2017-04-17 09:05:00和endDate 2017-04-17 09:50:00将不允许它是正确的,但如果我输入StartDate 2017-04-17 10:30:00和endDate 2017-04-17 011:30:00之间的时间,则应该允许它,因为时间只有9到10,并且不是10.30到9.30那么怎么允许呢 输入


您可以将以下标准与大于或等于、小于或等于的组合
ge
le
一起使用:

// assuming startdate and endDate are Date objects with the values in them as you wish. and your Criteria is called criteria
criteria.add(Restrictions.ge("startDate", startDate)); 
criteria.add(Restrictions.lt("startDate", endDate));
或者,您也可以使用
限制

criteria.add(Restrictions.between("startDate",startDate,endDate);
文档

静态标准
介于(字符串propertyName、对象lo、对象hi)之间

将“介于”约束应用于命名特性


您可以编写HQL

ResultTransformer将生成的查询结果转换为模型和 set参数是查询参数的占位符

Query query =  ((SQLQuery) getSession().createSQLQuery(
                "select First_name,Last_name,email_id from tabletbl  where (date(StartDate) between date('2017-04-17 08:05:00') AND
    date('2017-04-17 08:50:00')
    AND HOUR (StartDate) BETWEEN 8 AND 9) or(date(EndDate) between
    date('2017-04-17 08:05:00') AND
    date('2017-04-17 08:50:00')
    AND HOUR (EndDate) BETWEEN 8 AND 9) ).
                setResultTransformer(Transformers.aliasToBean(tabletbl.class))).                
                setParameter("StartDate", StartDate);    
List<tabletblModelClass> list = query.list();
Query Query=((SQLQuery)getSession().createSQLQuery(
“从表格中选择名字、姓氏、电子邮件id,其中(日期(StartDate))介于日期('2017-04-17 08:05:00')和
日期('2017-04-17 08:50:00')
和小时(开始日期)介于8和9之间)或(日期(结束日期)介于
日期('2017-04-17 08:05:00')和
日期('2017-04-17 08:50:00')
以及8和9之间的小时(结束日期)。
setResultTransformer(Transformers.aliasToBean(tabletbl.class)))。
设置参数(“开始日期”,开始日期);
List=query.List();

谢谢你的回答,我会在这里尝试设置值date('2017-04-17 08:50:00'此处)not to date(StartDate)你可以像StartDate=:StartDate.ok那样设置日期我知道了查看我更新的问题此查询还有其他问题
Query query =  ((SQLQuery) getSession().createSQLQuery(
                "select First_name,Last_name,email_id from tabletbl  where (date(StartDate) between date('2017-04-17 08:05:00') AND
    date('2017-04-17 08:50:00')
    AND HOUR (StartDate) BETWEEN 8 AND 9) or(date(EndDate) between
    date('2017-04-17 08:05:00') AND
    date('2017-04-17 08:50:00')
    AND HOUR (EndDate) BETWEEN 8 AND 9) ).
                setResultTransformer(Transformers.aliasToBean(tabletbl.class))).                
                setParameter("StartDate", StartDate);    
List<tabletblModelClass> list = query.list();