1

次のコードは、「vmtDataOrig.creationdate=2012-11-03」を出力します。

VmtData vmtDataOrig = VmtDataDao.getInstance().loadVmt(1);
System.out.println("vmtDataOrig.creationdate=" + vmtDataOrig.getCreationDate().toString());

VmtData クラスの creationDate フィールドの定義は次のとおりです。

private Date creationDate = null;

これは、作成日フィールドからデータベース テーブル列への休止状態のマッピングです。

<property name="creationDate" column="CREATIONDATE" type="date"/>

MySQL データベース テーブルの CREATIONDATE 列は「日付」型で、取得されたレコードの値は「2012-11-03」です。

java.util.Date.toString() メソッドの Javadoc は、Date オブジェクトを「dow mon dd hh:mm:ss zzz yyyy」の形式で出力することになっていると述べています。「yyyy-MM-dd」の形式で出力される理由を知っている人はいますか?

4

2 に答える 2

3

フィールドのタイプは ですが、Hibernate は、サブクラス化てオーバーライドする をjava.util.Dateまだ入力している可能性があります。たとえば、次のようになります。java.sql.Datejava.util.DatetoString()

public class Test {
    public static void main(String[] args) throws Exception {
        java.util.Date date = new java.sql.Date(0);
        System.out.println(date); // 1970-01-01
    }
}

ただし、それを確認するのは簡単です。

System.out.println(vmtDataOrig.getCreationDate().getClass());
于 2012-11-27T23:14:21.453 に答える
0

休止状態のタイプは日付であるため、java.sql.Date が使用されます (これは java.util.date のサブクラスです)。hibernate タイプを java.sql.Timestamp に変更すると、その toString() 実装が使用されます。

于 2012-11-27T23:18:12.163 に答える