【问题标题】:can't insert date into postgresql via eclipselink无法通过 eclipselink 将日期插入 postgresql
【发布时间】:2014-10-24 15:09:21
【问题描述】:

我在 postgresql 中有这张表

CREATE TABLE remise
(
id bigserial NOT NULL,
date_remise time without time zone 
)

这段代码通过 eclipselink 在其中插入一行:

Remise rm = new Remise();
rm.setId(1L);
rm.setDateRemise(Calendar.getInstance().getTime()); //today
dao.begin();
dao.save(rm);
dao.commit();

在 Remise Entity 类中,我有这个带有 getter 和 setter 的字段:

@Column(name = "date_remise")
@Temporal(TemporalType.TIME)
private Date dateRemise;

一切看起来都还不错,但是我插入的日期就是这样,只有时间,没有日期!
在 pgAdmin III 中:“03:16:03”
通过我的申请:“Thu Jan 01 03:16:03 WET 1970”

我正在使用:Postgresql 9.3、9.1-901-1.jdbc4、eclipselink 2.5.2。
需要您的帮助来解决此问题。谢谢。

【问题讨论】:

  • 您的意思是,您要保留日期+时间?那你为什么用那个 TemporalType 标记那个字段???
  • 我们拥有的时间类型是 TIME、DATE 和 TIMESTAMP,在 oracle 中我总是使用 TIME 并且存储的值是日期和时间。
  • TIME 表示存储时间,TIMESTAMP 表示存储DATE+TIME。它在 JPA 规范中

标签: postgresql datetime jpa eclipselink


【解决方案1】:

你需要使用没有时区的时间戳。

time without time zone 只存储时间部分。

【讨论】:

    【解决方案2】:

    感谢 araqnoon 的正确响应,字段映射只有一个精度:

    @Column(name = "date_remise")
    @Temporal(TemporalType.TIMESTAMP)
    private Date dateRemise; 
    

    【讨论】:

      猜你喜欢
      • 2017-04-03
      • 2014-08-20
      • 2017-10-01
      • 2013-09-01
      • 2013-10-22
      • 2021-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多