Ich habe mit Feder einfache Anwendung entwickelt 4.2.5 + Hibernate 5.1.0 - Datenbanksystem MS SQL Server 2014Spring + Hibernate + MS SQL Server - UTC-Zeitzone
Von wenigen Tagen, die ich mit korrektem habe Schwierigkeiten Speicherzeit + Zeitzone in der Datenbank.
Anforderungen, die ich erfüllen müssen, ist:
- speichern alle Daten in UTC-Zeitzone.
- Zeitzone in Datenbankspaltenwert speichern.
es zu erreichen, ich Modell namens MyComment erstellt:
@Entity
@Table(name = "MY_COMMENT")
@EntityListeners(value = { MyCommentListener.class })
@Audited
public class MyComment implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
private Long id;
@Column(name = "DATE_", nullable = false)
private Timestamp date;
...
}
Zur Durchsetzung Termine in Zeitzone UTC Speichern verwendet I Jadira Rahmen:
hibProperties.put("jadira.usertype.autoRegisterUserTypes", true);
hibProperties.put("jadira.usertype.javaZone", "UTC");
hibProperties.put("jadira.usertype.databaseZone", "UTC");
jedoch jeder während erstellen/aktualisieren Betrieb MyComment-Objekt, MyCommentListener erhält Datum von meiner lokalen Zeitzone (nicht UTC-Datum!):
public class MyCommentListener {
@PreUpdate
@PrePersist
public void setLastUpdate(MyComment myComment) {
myComment.setDate(new Timestamp(System.currentTimeMillis()));
}
}
Wissen Sie, wie ich dieses Problem lösen kann?
- Sollte ich einen anderen Datumstyp in meinem Modell verwenden? Anders als Timestamp?
- Welche Art von Typ sollte Spalte DATE_ in MS SQL Server-Datenbank sein?
Ich werde jede Hilfe zu schätzen wissen. Vielen Dank.
vielleicht sollten Sie fügen Sie ein ‚jadira‘ tag. Sie sollten auch angeben, ob eine Zeitzone * Name * oder * Offset * in der Datenbankspalte gespeichert werden soll. –
Könntest du es bitte mehr beschreiben? Ich verstehe nicht genau, was du meinst. – bontade
Das Jadira-Tag, weil Sie ihre Typen verwenden. Ihre Anforderungen scheinen technisch (speichern Sie UTC) aber dann 'Zeitzone in Datenbankspaltenwert speichern'. Miss, um anzugeben, ob Zeitzonen-Offset oder -ID Identifier hat mehr Informationen, siehe https://www.w3.org/TR/timezone/#tzids und https://www.w3.org/TR/timezone/#datetime Es hängt davon ab, was Sie tun müssen. Was ist der Zweck der Speicherung der Zeitzone? –