【问题标题】:Can't insert a Date object into a PostgreSQL Timestamp column using Hibernate无法使用 Hibernate 将 Date 对象插入 PostgreSQL Timestamp 列
【发布时间】:2013-07-05 09:59:06
【问题描述】:

我正在尝试使用primefaces调度组件,我发现在数据库(postgresql)中插入日期()时出现问题,java的日期类型和时间戳postgres之间存在我无法兼容的问题似乎解决了:

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);
}

【问题讨论】:

  • 看起来更像是 Postgre 和 Timestamp 列类型的问题,而不仅仅是 Java 方面的问题。
  • 是的,我找不到在时间戳类型的列中插入日期类型的对象的方法

标签: java hibernate postgresql timestamp


【解决方案1】:

看起来您的 Hibernate 映射不正确。您需要将该列映射为时间“时间戳”字段,但看起来您的计算机正在发送时间。时间戳有日期组件,但"16:00:00.747000 +00:00:00" 中没有日期。

您尚未显示实体的映射,因此很难更具体。如果您使用的是 JPA2 映射注释,您会编写:

@Temporal(TIMESTAMP)

【讨论】:

  • @HabibKsentini 好吧,这就是你的问题。您不能将TIME 存储在TIMESTAMP 列中。在数据库中使用TIME 列或使用TIMESTAMP 映射来匹配数据库中的真实内容。
猜你喜欢
  • 2011-02-05
  • 1970-01-01
  • 2017-11-15
  • 2021-06-07
  • 1970-01-01
  • 2013-02-18
  • 1970-01-01
  • 1970-01-01
  • 2011-11-21
相关资源
最近更新 更多