--Verwenden Sie Doma2. --Automatisch Entität mit Doma-Gen erzeugen. --UTC ist die zweite Epoche.
Wenn die DB-Tabelle einen TIMESTAMP-Typ (Datum und Uhrzeit) enthält, habe ich mich gefragt, welcher Typ behandelt werden soll. Bitte geben Sie uns Ihre Meinung.
Doma2 unterstützt die folgenden verknüpften Typen als Datums- / Uhrzeittypen. http://doma.readthedocs.io/ja/stable/basic/#id4
Unter diesen wird es beim Umgang mit Datum + Uhrzeit einen der folgenden Typen geben.
In Doma-Gen in der Doma1-Ära war der Typ, der dem TIMESTAMP-Typ (Datum und Uhrzeit) entsprach, java.sql.Timestamp. http://doma.seasar.org/extension/doma_gen_gen_task.html#EntityConfig
In Doma-Gen von Doma2 ist es jedoch java.time.LocalDateTime. http://doma-gen.readthedocs.io/ja/stable/gen/#entityconfig
Für weitere Informationen auf der folgenden Site speichert java.time.LocalDateTime Datum und Uhrzeit nicht in UTC, sondern in "Datum und Uhrzeit ohne Zeitzoneninformationen". https://qiita.com/dmikurube/items/15899ec9de643e91497c#javatimelocaldatetime
Im DB TIMESTAMP-Typ (Datum und Uhrzeit) werden Datum und Uhrzeit in UTC gespeichert. Wenn Sie also mit java.time.LocalDateTime damit umgehen, gehen die Zeitzoneninformationen verloren.
In PostgreSQL wird es übrigens intern in UTC gespeichert. https://www.postgresql.jp/document/9.6/html/datatype-datetime.html
java.sql.Timestamp kann eine UTC enthalten. Wenn Sie also eine Zeitzone angeben, werden Datum und Uhrzeit in dieser Zeitzone bestimmt. Mit anderen Worten, wenn Datum und Uhrzeit in UTC im System behandelt werden, können Sie die Zeitzone angeben und zum Zeitpunkt der Ausgabe in die Datums- und Zeitdarstellung dieser Zeitzone konvertieren. In diesem Sinne denke ich, dass es besser wäre, java.sql.Timestamp zu verwenden.
Im Fall von java.time.LocalDateTime muss jedoch bekannt sein, in welcher Zeitzone die Datums- und Zeitdarstellung verwendet wird, die keine Zeitzoneninformationen enthält. Wenn beispielsweise sowohl die Datenbank als auch das System auf eine Zeitzone beschränkt werden können, z. B. nur die japanische Zeitzone, kann dies ausreichend sein.
Bereiten Sie eine benutzerdefinierte Klasse vor, indem Sie die GenDialect-Klasse der zu verwendenden Datenbank erben (in diesem Beispiel die GenDialect-Klasse von PostgreSQL).
/**
*Eine Klasse, die Dialekte für PostgreSQL anpasst
*/
public class CustomPostgresGenDialect extends PostgresGenDialect {
public CustomPostgresGenDialect() {
//Zeitstempel mit Zeitzone ist Java.sql.Karte zum Zeitstempel.
classNameMap.put("timestamptz", Timestamp.class.getName());
}
}
Führen Sie Doma-Gen mit der oben genannten Klasse in der obersten Ebene "genDialectClassName" aus. (Die angegebene Klasse muss bei der Ausführung der Aufgabe im Klassenpfad enthalten sein.) http://doma-gen.readthedocs.io/ja/stable/gen/#id2
Recommended Posts