Spring / Hibernateプロジェクトがあり、データベースに日付を保存しようとしていますが、機能していません。それは愚かなことであるに違いありませんが、私は自分が何を間違っているのかわかりません。
これが私のコードです:
user.setFailedPasswordAnswerAttemptCount(0);
user.setLastLoginDate(new Date());
user.setIsOnline(true);
他の2つの変数(failedPasswordAnswerAttemptCountとisOnline)は、問題なくデータベースに書き込まれています。また、java.sql.Timestampの代わりにjava.util.Dateを渡すだけで試してみました...同じ結果です。プロパティがユーザーオブジェクトでどのように定義されるかを次に示します。
private Date lastLoginDate;
@Temporal(TemporalType.TIMESTAMP)
@Column(name="last_login_date")
public Date getLastLoginDate() {
return this.lastLoginDate;
}
public void setLastLoginDate(Date lastLoginDate) {
this.lastLoginDate = lastLoginDate;
}
列の定義は次のとおりです。
`last_login_date` datetime DEFAULT NULL
何か助けはありますか?これが機能しているはずなので、他に何を探すべきかさえわかりません。
エラーに関する詳細:休止状態ログにエラーや奇妙なメッセージはありません。Hibernateログにはパラメーター化されたクエリが表示されていますが、実際に何を書き込んでいるのかはわかりません。列がまったく更新されていないようです。つまり、日付がすでに存在する場合は変更されません。または、nullの場合は変更されません。
更新:ログを確認しましたが、Hibernateは適切なデータを書き込んでいるようですが、すぐに間違ったデータを再度書き込みます。ログに次のエントリが表示されます。
11:15:12.280 [http-bio-8080-exec-26] TRACE o.h.e.def.AbstractSaveEventListener - detached instance of: com.hi.model.User
11:15:12.280 [http-bio-8080-exec-26] TRACE o.h.e.def.DefaultMergeEventListener - merging detached instance
そしてその直後に、lastLoginDateの古い値が元に戻されているのがわかります。