Поле даты в моем классе сущностей определяется следующим образом:JPA и SQLite3 - неверная дата
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "LAST_EXECUTED")
private Date lastExecuted = new Date();
Однако, когда она сохраняется в базе данных SQLite3 через JPA, значение базы данных всегда «1899-12 -30' . У вас есть идеи, почему?
В базе данных задано DATETIME
.
Я пробовал использовать как SqliteJDBC, так и Xerial SQLite JDBC.
Update: После включения отладки SQL в EclipseLink JPA, и отключив параметр привязки, похоже даты вставляются следующим образом:
insert into run (last_executed) values ('{ts ''2012-02-17 10:34:58.013''}');
, который, если вставлен вручную в SQLite, дает дата '1899-12-30'.
Конечно, любые обходные пути были бы весьма полезными.
Очевидно, что вы используете конкретную реализацию JPA, и каждая реализация JPA даст разные результаты. Следовательно, фактически упоминание о том, какая реализация JPA будет полезной ;-) – DataNucleus
Прошу прощения; это EclipseLink JPA. – Dario
Не может помочь вам, так как DataNucleus JPA делает INSERT как «ВСТАВИТЬ В A (LAST_EXECUTED) VALUES ('2012-02-17 13: 41: 09.453')» и после извлечения имеет все данные, которые он имел при сохранении – DataNucleus