【发布时间】:2012-02-16 22:09:02
【问题描述】:
我的实体类中的日期字段定义如下:
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "LAST_EXECUTED")
private Date lastExecuted = new Date();
但是,当它通过 JPA 持久化到 SQLite3 数据库时,数据库值始终为 '1899-12-30'。你有什么想法吗?
在数据库中,字段定义为DATETIME。
我尝试过同时使用 SqliteJDBC 和 Xerial SQLite JDBC。
更新:在EclipseLink JPA中开启SQL调试,关闭参数绑定后,貌似插入了如下日期:
insert into run (last_executed) values ('{ts ''2012-02-17 10:34:58.013''}');
如果在 SQLite 中手动插入,则会给出日期“1899-12-30”。
当然,任何解决方法都将不胜感激。
【问题讨论】:
-
显然您在那里使用了特定的 JPA 实现,并且每个 JPA 实现都会给出不同的结果。因此,实际上提到哪个 JPA 实现会有所帮助;-)
-
对不起;它是 EclipseLink JPA。
-
无法帮助您,因为 DataNucleus JPA 将 INSERT 设置为“INSERT INTO A (LAST_EXECUTED) VALUES ('2012-02-17 13:41:09.453')”并且在检索时具有所有它拥有的数据持久化
-
'1899-12-30' 是零日期,那么数据库中的数据类型是什么?它可能只是存储时间信息并将日期转换为 0。
标签: sqlite jpa eclipselink