Wie speichern Zeitstempel in der h2-Datenbank

Habe ich eine einfache REST-Api freilegen von mehreren Einrichtungen, von denen einige, hat date Feld, die ich gerne speichern in einer H2-Datenbank im UNIX-timestamp-format. Dies ist jedoch verursachen die followign Ausnahmen:

Caused by: org.h2.jdbc.JdbcSQLException: Cannot parse "TIMESTAMP" constant "335923000"; SQL statement:
INSERT INTO people (person_id, first_name, last_name, email, gender, location, date_birth) VALUES 
    ('1', 'Peter', 'Smith', '[email protected]', 'MALE', 'London', 335923000),
    ...

Zuvor arbeitete Sie mit Zeitstempel im folgenden format: '1980-04-08'.

Dies ist der SQL-Tabelle definition:

CREATE TABLE people (
    person_id BIGINT PRIMARY KEY auto_increment,
    first_name VARCHAR(32),
    last_name VARCHAR(32),
    email VARCHAR(128) UNIQUE,
    gender VARCHAR(8),
    location VARCHAR(32),
    date_birth TIMESTAMP,
);

und meine mapping-Objekt (unnötige details weggelassen):

@Entity
@Table(name = "people")
@Getter
@Setter
public class Person {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "person_id")
    private long id;

    ...

    @Column(name = "date_birth")
    @JsonFormat(pattern = "YYYY-MM-dd")
    private Date dateOfBirth;

    ...
}

Ich gehe davon aus das die @JsonFormat Anmerkung hat nichts zu tun mit der Datenbank timestamp-format, aber ich bin nicht sicher, wie zu sagen, hibernate, dass meine Zeitstempel im UNIX-format.

Ich habe mir bei konvertiert unix timestamp zu timestamp H2 und H2 docs und das standard-format sollte unterstützt werden. Könnte mir jemand zeigen Sie mir, was mache ich falsch?

Verwenden Sie java.util.Date oder java.sql.Datum?
Ich bin mit java.util.Datum
Haben Sie versucht, mit DATE statt TIMESTAMP, wie Ihre Spalte name hin, es ist nur ein Datum, nicht eine timestamp?

InformationsquelleAutor Smajl | 2016-09-25

Schreibe einen Kommentar