XML/XSD のような要素はほとんどありません<TestElement tc="222">SomeValue</TestElement>
。XSD tc に従って、その値はキーと値のペアだけを持つ別の要素に属します。
<xsd:element ref="TestElement" minOccurs="0" />
<xsd:element name="TestElement" type="SUBTYPE_CODES" />
<xsd:complexType name="SUBTYPE_CODES">
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="tc" use="required" type="TRANS_MODE_CODES_TC" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
このように、JAXB はデフォルトで、この要素に対して 2 つの文字列キーと値を持つ個別のクラスを生成しました。
JAXB生成要素
@XmlElement(name = "TestElement")
protected SUBTYPECODES testElement;
属性クラス:
@XmlType(name = "SUBTYPE_CODES", propOrder = {
"value"
})
public class SUBTYPECODES {
@XmlValue
protected String value;
@XmlAttribute(name = "tc", required = true)
protected BigInteger tc;
}
今では、属性の種類ごとに 1,000 を超えるクラスがあります。これらのクラスを Hibernate のエンティティ クラスとして使用します。
以下のようなJAXBクラスに変更し、すべての属性固有のクラスを取り除きたいです。
protected String testElementTC;
protected String testElementValue;
マーシャリング/アンマーシャリングに影響を与えずに、JAXB で生成されたクラスで上記の変数を宣言するにはどうすればよいですか?