0

MySQLから持ち込まれたオブジェクトを表すエンティティクラスがあります。フィールドの1つは、Hibernateを介してマップしたMySQLDateTimeフィールドです。

@Temporal(TemporalType.DATE)
private Date effdate;

ただし、その日付がデータベースからnullである場合は、setterメソッドで現在の日付に設定します。私が理解しているように、Hibernateはデフォルトをサポートしておらず、 columnDefinition句を使用してフィールドをデフォルトにすると、実装がベンダーに関連付けられます。

フィールドがMySQLに適切に入力されると、2番目の出力行のように見えます。デフォルトにすると、最初のように見えます。2つの日付フィールドが同じように見えるべきではありませんか?最終的に問題がなければ、心配する必要はありませんが、Dateオブジェクトの表示がどのように異なるかを理解したいと思います。SimpleDateFormatについては知っていますが、どちらも単なる日付オブジェクトであるため、ここで機能するかどうかはわかりません。@Temporalアノテーションはそれに何かをしていますか?

Tue Apr 24 14:34:10 EDT 2012  <- my default
2012-04-24 00:00:00.0         <- from MySQL

セッターメソッド

public void setEffdate(Date effdate) {
// TODO if effdate is null use "d"

    Date d = new Date();
    this.effdate = effdate;

    System.out.println(d);
    System.out.println(this.effdate + "\n");
4

2 に答える 2

1

Dateオブジェクトがどのように異なって表示されるかを理解したい

Datejava.util.Dateと。と呼ばれる2つの具体的なクラスがありjava.sql.Dateます。後者は前者を拡張し、日付を「2012-04-24」としてフォーマットします。

どちらも単なる日付オブジェクトです

それらはほぼ確実に2つの異なるタイプのインスタンスであり、動作の違いを説明しています。MySQLから取得しているものはおそらくjava.sql.Dateであり、自分で作成しているデフォルトのものはおそらくjava.util.Dateです。

于 2012-04-24T18:57:48.453 に答える
0

合体関数を使用して、Javaではなくデータベースからデフォルトを指定するのはどうですか?

http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html#function_coalesce

それ以外の場合はaixが正しいので、インポートを確認する必要があります

于 2012-04-24T19:01:38.840 に答える