Die Hibernate-Dokumentation enthält die folgenden Informationen für die @Temporal
Anmerkung:
In einfachen Java-APIs ist die zeitliche Genauigkeit der Zeit nicht definiert. Wenn Sie mit zeitlichen Daten arbeiten, möchten Sie möglicherweise die erwartete Genauigkeit in der Datenbank beschreiben. Zeitliche Daten können die Genauigkeit DATE, TIME oder TIMESTAMP haben (dh das tatsächliche Datum, nur die Uhrzeit oder beides). Verwenden Sie die Annotation @Temporal, um dies zu optimieren.
Was heißt temporal precision of time is not defined
das Was sind temporal
Daten und ihre Genauigkeit? Wie stimmt es ab?
Antworten:
Diese Anmerkung muss für persistente Felder oder Eigenschaften vom Typ
java.util.Date
und angegeben werdenjava.util.Calendar
. Sie darf nur für Felder oder Eigenschaften dieser Typen angegeben werden.Die
Temporal
Annotation kann in Verbindung mit derBasic
Annotation, derId
Annotation oder derElementCollection
Annotation verwendet werden (wenn der Elementauflistungswert von einem solchen zeitlichen Typ ist.In einfachen Java-APIs ist die zeitliche Genauigkeit der Zeit nicht definiert. Wenn Sie mit zeitlichen Daten arbeiten, möchten Sie möglicherweise die erwartete Genauigkeit in der Datenbank beschreiben. Zeitliche Daten können die Genauigkeit DATE, TIME oder TIMESTAMP haben (dh das tatsächliche Datum, nur die Uhrzeit oder beides). Verwenden Sie die
@Temporal
Anmerkung, um dies zu optimieren.Die zeitlichen Daten sind die zeitbezogenen Daten. In einem Content-Management-System sind beispielsweise das Erstellungsdatum und das Datum der letzten Aktualisierung eines Artikels zeitliche Daten. In einigen Fällen benötigen zeitliche Daten Präzision und Sie möchten genaues Datum / Uhrzeit oder beides (
TIMESTAMP
) in der Datenbanktabelle speichern.Die zeitliche Genauigkeit ist in den Java-Kern-APIs nicht angegeben.
@Temporal
ist eineJPA
Anmerkung, die zwischen Zeitstempel und hin und her konvertiertjava.util.Date
. Es wandelt sich auchtime-stamp
in Zeit um. Im folgenden Snippet wird beispielsweise@Temporal(TemporalType.DATE)
der Zeitwert gelöscht und nur das Datum beibehalten .Laut Javadocs
[Informationen oben aus verschiedenen Quellen gesammelt]
quelle
yyyy-MM-dd
02/10/2017
und möchte es konvertieren zu2017-10-02
oder2017/10/02
@Temporal
ist eine JPA-Annotation, mit der in der Datenbanktabelle eines der folgenden Spaltenelemente gespeichert werden kann:java.sql.Date
)java.sql.Time
)java.sql.Timestamp
)Im Allgemeinen, wenn wir ein
Date
Feld in der Klasse deklarieren und versuchen, es zu speichern.Es wird als TIMESTAMP in der Datenbank gespeichert.
Der obige Code speichert den Wert wie folgt: 08-07-17 04: 33: 35.870000000 PM
Wenn wir nur das DATUM in der Datenbank speichern möchten , können
wir verwenden / definieren
TemporalType
.Dieses Mal würde es 08-07-17 in der Datenbank speichern
Es gibt einige andere Attribute
@Temporal
, die je nach Anforderung verwendet werden können.quelle
Zeitliche Typen sind zeitbasierte Typen, die in persistenten Zustandszuordnungen verwendet werden können.
Die Liste der unterstützten zeitlichen Typen umfasst die drei
java.sql
Typenjava.sql.Date
,java.sql.Time
undjava.sql.Timestamp
, und es umfasst die beidenjava.util
Typenjava.util.Date
undjava.util.Calendar
.Die
java.sql
Typen sind völlig problemlos. Sie verhalten sich wie jeder andere einfache Zuordnungstyp und erfordern keine besondere Berücksichtigung.Die beiden
java.util
Typen benötigen jedoch zusätzliche Metadaten, um anzugeben, welcher der JDBC-java.sql
Typen bei der Kommunikation mit dem JDBC-Treiber verwendet werden soll. Dazu werden sie mit der@Temporal
Annotation versehen und der JDBC-Typ als Wert desTemporalType
Aufzählungstyps angegeben.Es gibt drei aufgezählte Werte für DATE, TIME und TIMESTAMP, um jeden der
java.sql
Typen darzustellen .quelle
benutze das
quelle
Wenn Sie nach einer kurzen Antwort suchen:
Bei der Verwendung von java.util.Date weiß Java nicht wirklich, wie man sich direkt auf SQL-Typen bezieht. Das ist wenn
@Temporal
ins Spiel kommt. Es wird verwendet, um den gewünschten SQL-Typ anzugeben.Quelle: Baeldung
quelle
Ich benutze Hibernate 5.2 und
@Temporal
wird nicht mehr benötigt.java.util.date , sql.date , time.LocalDate werden in der Datenbank mit dem entsprechenden Datentyp als Datum / Zeitstempel gespeichert.
quelle
Wir verwenden die Annotation @Temporal, um Datum, Uhrzeit oder beides in die Datenbanktabelle einzufügen. Mit TemporalType können wir Daten, Uhrzeit oder beides in die Tabelle int einfügen.
quelle