1

JAXB のスキーマから Java へのマッピングが行われるときに、XML スキーマ タイプの「xsd:date」が「javax.xml.datatype.XMLGregorianCalendar」にマッピングされる理由がわかりません。

XML Schema Type の "xsd:date" が "java.util.Date" にマップされるのはなぜですか?

JAXBは意図的にマッピングを行っていると思います。その理由があれば知りたいです。

また、存在する場合、XML Schema Typeの「xsd:date」をアノテーションを使わずにJavaクラスの「java.util.Date」に変更する方法(例:@XmlJavaTypeAdapter)。

すべての注釈なしでマシャリングとアンマーシャリングを行いたいです。

4

2 に答える 2

1

Java クラスから開始する場合、任意の「日付」データ型を使用できます。XML スキーマから開始すると、すべての時間情報 (タイム ゾーンを含む) が保持されるため、XMLGregorianCalendar が生成されます。もちろん、生成されたオブジェクトをいつでも変更したり、スキーマに注釈を付けてさまざまな型を生成したりできます。

詳細については:

于 2010-12-25T14:09:39.333 に答える
1

いくつかの理由

  1. java.util.Date は TimeZone の
  2. 組み込みの Calendar クラスでは処理できない ISO 8601 日時形式を処理できるようにします。たとえば、月は 1 ~ 12 ですが、Calendar/Date は 0 ~ 12 です。クエリを実行するときに、最初の月を 0 ではなく 1 として取得したい場合があります。
于 2010-12-27T02:58:36.690 に答える