我想搜索所有員工,使用存儲在serialNumberList
中的相應ID並將所有時間加在一起。 serialNumberList
是一個包含用逗號分隔的ID的字符串。發生的情況是,它無法添加serialNumberList
中指示的所有員工的所有小時數。這是我的代碼片段。謝謝。如何在休眠模式下使用setParameter
查詢
public double getPeMSummary(Date startDate, Date endDate, String serialNumberList) {
SessionFactory sessionFactory = HBSessionFactory.getSessionFactory();
Session sessObj = sessionFactory.openSession();
sessObj.beginTransaction();
String query = "SELECT SUM(CAST(pde.utilHours as float)) from PumDetailsEntity as pde WHERE"
+ " pde.utilDay >= :startDate AND"
+ " pde.utilDay <= :endDate AND"
+ " pde.serialNumber = (:serialNumberList) AND"
+ " (pde.utilHours NOT LIKE '%HO%' OR"
+ " pde.utilHours NOT LIKE '%VL%' OR"
+ " pde.utilHours NOT LIKE '%SL%'"
+ " )";
Iterator result = sessObj.createQuery(query).
setParameter("startDate", startDate).
setParameter("endDate", endDate).
setParameter("serialNumberList", serialNumberList).list().iterator();
sessObj.close();
double ans = 0;
if (result.hasNext()){
Object obj = result.next();
if (obj instanceof Double) {
ans = (Double) obj;
}
System.out.println(obj+" "+ans);
}
return ans;
}
樣本數據
第一:二開始日期:結束日期三:用逗號分隔的ID列表
2016-12-24 2017-01-27 'P100GEPH1,X91729PH1,P100F2PH1,P100FBPH1,123973PH1,P100C2PH1,123972PH1,112935PH1,P100F9PH1,P100F7PH1,P100F5PH1,147598PH1,P100F8PH1,P100F0PH1,P100GFPH1,113212PH1,P100ARPH1,134662PH1,148034PH1
1:我忘了把它改成IN。謝謝 2:serialNumberList不是一個列表,雖然...這是一個字符串包含id用逗號分隔.. – KaelJasper
好吧,我的壞!我認爲這是一個列表。將編輯答案。希望它現在可以工作。 – YuVi
它仍然不起作用 – KaelJasper