因此,我正在尝试提取我的 Postgres 数据库表的 XML 描述,我可以将其与 JAXB 一起使用来处理一些 Java<->DB 通信。问题是,我对表中的几个字段使用 Postgres 'box' 数据类型,而 Postgres table_to_xmlschema 似乎没有为框生成有效的 XML。
这是我的SSCCE:
Postgres 表创建:create table BoxTest ( foo Box);
Postgres 调用以生成 XML 模式: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>
问题是“box”类型的描述是空的,尽管它是 Postgres 的内置类型。(特别是,我收到 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。
提前致谢!