hibernateおよびjoda時間を使用してデータベースにDateTimeを格納するときに、私は奇妙な問題を抱えています。私は改訂日付でエンティティを保存する場合hibernateを使用してSQL Serverデータベースにjoda DateTimeを格納する方法
import org.joda.time.DateTime;
public class RelationshipEntity {
@Column(name = "date_revision")
@Type(type = "org.jadira.usertype.dateandtime.joda.PersistentDateTime")
private DateTime dateRevision;
// other fields
}
私はTimeZone.setDefault(TimeZone.getTimeZone("Europe/Paris"));
とアプリケーションにヨーロッパ/パリ(GMT + 1)にタイムゾーンを設定しています
は、私はこのようなBeanを持っていますデータベースに2017-01-19 13:24
に、私は2017-01-19 12:24
に設定されているデータベースの日付を見ることができ、私はなぜ理解していない。
ため、データベースのタイムゾーンはまた、ヨーロッパ/パリのようだ:私は春ブートを使用すると、私はapplication.yml
jadira.usertype.autoRegisterUserTypes: true
jadira.usertype.databaseZone: jvm
jadira.usertype.javaZone: jvm
に論文のプロパティを追加しようとしました
SELECT SYSDATETIME(); //2017-01-19 14:41
SELECT SYSUTCDATETIME(); // 2017-01-19 13:41
を実行し、引数-Duser.timezone=Europe/Paris
でアプリケーションを起動しますが、それでも保存します日付をUTCでデータベースに格納します。私はLocalDateTime
にDateTime
を変更し、問題解決するために
:この変更により
@Column(name = "date_revision")
@Type(type = "org.jadira.usertype.dateandtime.joda.PersistentLocalDateTime")
private DateLocalTime dateRevision;
を、データベース内dateRevisionは私が私のJava Bean内の設定と同じです。
タイプorg.joda.time.DateTime
を使用すると、日付をUTCに変換する理由を誰かから説明できますか?
注:私はそれは、あなたが気にしないときに使用されるべきであるUTCとのLocalDateTimeでzodaのDateTimeストアデシベルの日付は、日付を格納するため、これは2.5
DBに時間を節約する際に普遍的な基準があるのは意味がありませんか? 2つの異なるタイムゾーンの2人のユーザーがそれを使用するとどうなりますか? – notanormie
私のアプリケーションとデータベースのタイムゾーンが同じであれば、私はなぜjavaの日付とdbの日付の間に違いがあるのかわかりません。 DateTimeを使用しているときの日付をUTCで変換するデフォルトの動作ですか? –