2012-05-08 16 views
3

我在MySql數據庫中以YYYY-mm-dd hh:mm:ss格式插入日期時遇到問題。在DB中提交的 是datetime類型的。如何使用hql在MySql中設置datetime字段

我嘗試了:

Calendar calendar = Calendar.getInstance(); 
calendar.setTime(new Date()); 
calendar.set(Calendar.MINUTE, startMinute); 
calendar.set(Calendar.SECOND,01); 
Date startTime = calendar.getTime(); 

String hqlUpdate = "update challenge set start_time = :startTime where challenge_id = :id"; 
sessionFactory.getCurrentSession().createSQLQuery(hqlUpdate) 
           .setDate("startTime", startTime) 
           .setInteger("id", id).executeUpdate(); 
+0

- challange,你用過 @Temporal 私人日期START_TIME; 你得到的錯誤是什麼? – Sanath

+0

嘗試添加try catch塊以捕獲任何異常以找到阻止您保存數據的問題 – Sanath

+0

yes與start_time我擁有@Temporal(javax.persistence.TemporalType.TIMESTAMP)並且沒有得到任何異常,但在數據庫中我可以c隻日期hh:mm:ss都是00:00:00總是 – Romi

回答

0

這裏,我已經具體試過將它傳遞到休眠之前格式化使用SimpleDateFormat的日期的對象。檢查這是否有效。

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); 
Calendar calendar = Calendar.getInstance(); 
calendar.setTime(new Date()); 
calendar.set(Calendar.MINUTE, startMinute); 
calendar.set(Calendar.SECOND,01); 
Date startTime = dateFormat.parse(dateFormat.format(calendar.getTime();)); 

String hqlUpdate = "update challenge set start_time = :startTime where challenge_id = :id"; 
sessionFactory.getCurrentSession().createSQLQuery(hqlUpdate) 
          .setDate("startTime", startTime) 
          .setInteger("id", id).executeUpdate(); 
0

它的工作對我來說,如果使用setParameter(),而不是setDate() ...

2

嘗試使用以下。

.setTimestamp("startTime", startTime); 
在實體
+0

感謝它幫助我....... –

相關問題