2014-02-24 42 views
0

您好我正在Java中使用hibernate。我012r在SOrder表中的一行,然後我想更新它。所以我用這個代碼:如何將日期類型傳遞給CreateSQLQuery

s.beginTransaction(); 
s.save(ordered[i]); 
s.getTransaction().commit(); 
s.beginTransaction(); 
SOrder so = (SOrder) s.createSQLQuery("select * from SOrder where Created_Time=?") 
       .addEntity(SOrder.class) 
       .setParameter(0, ordered[i].Created_Time) 
       .uniqueResult(); 
so.Pay_Status="Payed"; 
so.Response_Code="00"; 
s.update(so); 
s.getTransaction().commit(); 

save法正常工作,但是當我Select *空返回so,但CREATED_TIME僅僅是其中一個以前保存。 是否有任何特殊的方式將Date類型傳遞給CreateSQLQuery?

回答

0

如果您使用=運算符,則parameter date必須與DB的日期形式完全相同。我想,這就像使用=運算符作爲日期參數的風險JPQLhql。 我建議使用><BETWEEN運營商。

WHERE Adate > Bdate      => Adate is before Bdate 
WHERE Adate < Bdate      => Adate is after Bdate 
WHERE Cdate BETWEEN Adate AND Bdate  => Cdate is between Adate and Bdate 
+0

是的我希望他們是完全一樣的,我保存'Created_Time'本身,它沒有理由返回null。感謝你的回答,但我改變了解決方案,我不再需要它。 –

相關問題