トリッキーなバグを見つけました:
以下のようにmetadata-xml-bindingを定義すると
<?xml version="1.0"?>
<xml-bindings xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm"
package-name="package" xml-mapping-metadata-complete="true">
<xml-schema element-form-default="QUALIFIED" />
<java-types>
<java-type name="SearchResult">
<xml-root-element/>
<java-attributes>
<xml-element java-attribute="count"/>
<xml-element java-attribute="requestParameters"/>
<xml-element java-attribute="pageSize"/>
<xml-element java-attribute="sortDirection"/>
<xml-elements java-attribute="results">
<xml-element name="GaDictionaryElement" type="it.ga.model.GaDictionary">
<xml-element-wrapper name="GaDictionaryElementWrapper" />
</xml-element>
<xml-element name="OrganizationUnitElement" type="it.ga.model.OrganizationUnit">
<xml-element-wrapper name="OrganizationUnitElementWrapper" />
</xml-element>
<xml-element name="PersonElement" type="it.ga.model.Person">
<xml-element-wrapper name="PersonElementWrapper" />
</xml-element>
<xml-element name="Empty" type="java.lang.String">
<xml-element-wrapper name="EmptyWrapper" nillable="true"/>
</xml-element>
</xml-elements>
</java-attributes>
</java-type>
</java-types>
</xml-bindings>
タグから囲まれたタグに入っているため、<xml-element-wrapper>
タグが機能しないことがわかりました。そこで、この問題をクリーンな方法で解決する方法を探していました。クラスの結果が空の場合、空のノードが必要だからです。非常に悪い回避策は、結果用に持っているタイプと同じように多くの異なるバインディング ファイルを作成することですが、私はそれが好きではありません!
さらに、誰かが特定のインターフェイスを実装するクラスに役立つ可能性のあるバインディング ファイルを作成しようとしましたか? たとえば、バインディング ファイルで定義されたオブジェクトのプロパティのみを表示し、インターフェイスの名前を型として指定する方法はありますか? 私はこれを見ました: [ブログ]: http://blog.bdoughan.com/2010/07/moxy-jaxb-map-interfaces-to-xml.html#comment-form<xml-element>
<xml-elements>
List<?>
List<?>