そこで、Java<->DB 通信を処理するために JAXB で使用できる Postgres データベース テーブルの XML 記述を抽出しようとしています。問題は、テーブルのいくつかのフィールドに Postgres の「ボックス」データ型を使用していて、Postgres の table_to_xmlschema がボックスに有効な XML を生成していないように見えることです。
これが私のSSCCEです:
Postgres テーブルの作成:create table BoxTest ( foo Box);
XML スキーマを生成するための Postgres 呼び出し:select * from table_to_xmlschema('BoxTest', true, true, 'SomeName');
結果のスキーマ:
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="SomeName"
elementFormDefault="qualified">
<xsd:simpleType name="UDT.User.pg_catalog.box">
</xsd:simpleType>
<xsd:complexType name="RowType.User.public.boxtest">
<xsd:sequence>
<xsd:element name="foo" type="UDT.User.pg_catalog.box" nillable="true"></xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="boxtest" type="RowType.User.public.boxtest"/>
</xsd:schema>
問題は、Postgres の組み込みタイプであるにもかかわらず、'box' タイプの説明が空であることです。(特に、SAX 解析エラーが発生し、メッセージが表示されますorg.xml.sax.SAXParseException: s4s-elt-must-match.2: The content of 'simpleType' must match (annotation?, (restriction | list | union)). Not enough elements were found.
) それで、その出力を修正するために渡す/設定する必要があるオプションはありますか? 組み込みオプションがない場合、Postgres 内で table_to_xmlschema の出力を微調整/修正する簡単な方法はありますか? そして、提案されたソリューションでは、結果のスキーマで JAXB を正しく動作させるために何をする必要がありますか?
問題があれば、私は Postgres 9.1 と (おそらく) jaxb-impl 2.1.6 を使用しています。
前もって感謝します!