0

Date として宣言された Entity フィールドがあり、Oracle の日付フィールドにマップされています。そのフィールドの値を出力すると、 のような日付形式になります 2013-04-23 09:05:03.0

この日付を ISO 8601 形式に変換する必要があります。だから私は使用しました:

System.out.println("Converted Date:" + asXMLGregorianCalendar(retrunedDate);

private static DatatypeFactory df = DatatypeFactory.newInstance();

public static XMLGregorianCalendar asXMLGregorianCalendar(java.util.Date date) {
    if (date == null) {
        return null;
    } else {
        DatatypeFactory df = DatatypeFactory.newInstance();
        GregorianCalendar gc = new GregorianCalendar();
        gc.setTimeInMillis(date.getTime());
        return df.newXMLGregorianCalendar(gc);
    }
}

次のコードは次を返します。

System.out.println("Converted Date:" + asXMLGregorianCalendar(retrunedDate);

// Output
Converted Date: 2013-04-23T09:05:03.000-05:00

質問:

  1. 000実際の数の代わりがあります。なぜかわからない?
  2. 0hibernate の最後は何2013-04-23 09:05:03.0ですか? 完全な日付を取得するにはどうすればよいですか?

を渡すとDate、必要な結果が得られます。

System.out.println("Converted Date:" + asXMLGregorianCalendar(new Date());

// Output
Converted Date: 2013-08-23T17:19:15.664-05:00

これが必要です。の代わりに000、ミリ秒を取得する必要があります。Hibernateは日付で何かをしていますか?

4

1 に答える 1

2

OracleDATEデータ型は、小数秒を格納しません。ミリ秒を保存して回復したい場合は、列のデータ型を に変更する必要がありますTIMESTAMP

于 2013-08-23T22:52:11.193 に答える