在我當前的項目中,我需要處理一組包含一些財務信息的XML文件,並在稍後對該數據執行一些複雜查詢以填充數據庫模式。使用Hyperjaxb在生成的JPA模型上設置列長度
這些XML文件是基於XSD的,我使用Hyperjaxb3 maven插件從它生成JPA類,一切似乎都正常工作。不幸的是,我發現和問題是,即使在Hyperjaxb文檔,Google和這裏花費了大量的時間搜索之後,我仍然無法找到解決方案。
這是一個XML文件的片段:
<metrics>
<metric name="pi1" type="decimal" periodType="instant" creationDate="">
<label xml:lang="es">Número de personal remunerado</label>
<label xml:lang="en">Number of staff recipient</label>
</metric>
<metric name="md2" type="monetary" periodType="duration" creationDate="">
<label xml:lang="es">Importe devengado en el período actual (flujo)</label>
<label xml:lang="en">Amount awarded in the current period (flow)</label>
</metric>
</metrics>
問題是關係到標籤元素。它的XSD定義如下:
<xs:element name="label">
<xs:complexType mixed="true">
<xs:attribute ref="xml:lang" use="required"/>
</xs:complexType>
</xs:element>
而生成的Java類看起來是這樣的:
@XmlRootElement(name = "label")
@Entity(name = "Label")
@Table(name = "LABEL")
@Inheritance(strategy = InheritanceType.JOINED)
public class Label implements Serializable, Equals, HashCode {
@XmlValue
protected String content;
...
@Basic
@Column(name = "CONTENT")
public String getContent() {
return content;
}
@Basic
@Column(name = "LANG")
public String getLang() {
return lang;
}
}
我的問題是,我該怎麼定義「內容」一欄的長度是多少?目前,我一直玩我的綁定文件
<jaxb:bindings node="//xs:element[@name='label']">
<hj:basic>
<orm:column length="1024"/>
</hj:basic>
</jaxb:bindings>
但沒有任何區別。哦,順便說一句,如果可能的話,應該避免更改XSD文件,因爲它是由第三方提供的。
作者在這裏。下次直接詢問SO,我正在看標籤。您正朝着正確的方向努力,唯一的問題是 - 如何自定義混合內容屬性。我會試一試並報告。你可以通過在這裏提供樣本來幫助你:https://github.com/highsource/hyperjaxb3/tree/master/ejb/tests/cu-one/src/main/resources – lexicore 2015-02-10 12:37:41
謝謝lexicore。按照建議創建PR。沒有合併它只是爲了避免任何問題(與Github一起工作的經驗不多) – 2015-02-10 13:53:01