2017-04-13 72 views
0

此查询在所有情况下都可以正常工作例如 StartDate 2017-04-17 09:00:00和endDate 2017-04-17 10:00:00它会采用它是正确的,如果v输入StartDate 2017-04-17 09:05:00和endDate 2017-04-17 09:50:00它不会允许它的正确,但如果我输入的时间StartDate 2017-04-17 10: 30:00日期和结束日期2017年4月17日011:30:00就应该被允许随着时间只有9到10中存在,而不是10.30至9.30因此,如何让这个 输入如何检查休眠时间

Query query = session.createQuery("from TableDTO where cName =? and ((date(startDate) between date(:std) AND date(:etd))AND (HOUR (startDate) BETWEEN :stDate AND :edDate))or((date(endDate) between date(:std) AND date(:etd))AND(HOUR (endDate) BETWEEN :stDate AND :edDate))"); 
     query.setParameter(0, timeTableDTO.getClassName()); 
     query.setParameter("std", timeTableDTO.getStartDate()); 
     query.setParameter("etd", timeTableDTO.getEndDate()); 

     query.setParameter("stDate", starthr); 
     query.setParameter("edDate", endthr); 

回答

0

您可以像使用标准在下面用大于或等于和小于或等于的组合gele

// 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)); 

或者,您也可以使用Restrictions.between

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

文档here ...

静态标准
之间(字符串propertyName的,对象卤味,对象喜)

应用“之间”约束到指定的属性

+0

感谢乌拉圭回合的答案我会在这里尝试 – priyadarshini

1

您可以编写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(); 
+0

我想设置值日期(“2017年4月17日八时50分00秒”在这里)没有日期(起始日期) – priyadarshini

+0

您可以设置日期一样的startDate =:startDate。 – Vaibs

+0

okk我知道了,看到我更新的问题,我有这个查询的另一个问题 – priyadarshini