2013-07-08 61 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'映射来匹配数据库中真正的内容。 –