2013-07-08 58 views
0

我試圖使用primefaces日程安排組件,我發現問題在數據庫中插入日期()(postgresql),有一個不兼容的問題java和時間戳的Postgres的日期類型,我似乎無法來解決:不能使用休眠插入日期對象到PostgreSQL Timestamp列使用休眠

org.hibernate.exception.DataException nested exception is: 
ERROR: invalid input syntax for type timestamp : 
    "16:00:00.747000 +00:00:00" 

這裏是我的數據庫測試的插入功能:

@Test 
public void testEdit() { 
    Event event = new Event(); 
    Calendar t = (Calendar) today().clone(); 
    t.set(Calendar.AM_PM, Calendar.PM); 
    t.set(Calendar.DATE, t.get(Calendar.DATE) + 4); 
    t.set(Calendar.HOUR, 4); 
    event.setStartDate(t.getTime()); 
    sessionService.save(event); 
} 
+0

看起來更像是Postgre和Timestamp列類型的問題,而不僅僅是Java方面。 –

+0

是的,我找不到一種方法來插入日期類型的時間戳列 –

回答

2

看起來像你的Hibernate映射是不正確的。您需要將該列映射爲時間「時間戳」字段,但看起來您的計算機只是發送時間。時間戳記包含日期組件,但"16:00:00.747000 +00:00:00"中沒有日期。

您尚未顯示該實體的映射,因此很難更具體。如果您使用的是JPA2映射註釋,您可以這樣寫:

@Temporal(TIMESTAMP) 
+0

@HabibKsentini的列中的對象那麼,這是你的問題。你不能在'TIMESTAMP'列中存儲'TIME'。在數據庫中使用'TIME'列或使用'TIMESTAMP'映射來匹配數據庫中真正的內容。 –