2017-04-13 73 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