簡體   English   中英

HyperJaxb3和xsd:anyType

[英]HyperJaxb3 and xsd:anyType

我有一個看起來像的模式片段

<xs:element name="dataValue">
        <xs:complexType>
            <xs:sequence>           
                <xs:element name="value" type="xs:anyType"\>
            </xs:sequence>
        </xs:complexType>
</xs:element>

hyperjaxb3生成的類包含以下片段:

@XmlElement(required = true)
protected Object value;

@Transient
public Object getValue() {
    return value;
}

public void setValue(Object value) {
    this.value = value;
}

@Basic
@Column(name = "VALUEOBJECT")
public String getValueObject() {
    if (JAXBContextUtils.
       isMarshallable("org.lcogt.schema", this.getValue())) {
        return JAXBContextUtils.unmarshall("org.lcogt.schema", this.getValue());
    } else {
        return null;
    }
}

據我所知,hibernate將很難持久化純對象,因此hyperjaxb假設該對象可以被解組為XML字符串並且生成的String是持久的。 在我的情況下,這不是真的,但我可以保證toString()方法將返回一些有用的東西。 我希望生成的代碼看起來更像:

@XmlElement(required = true)
protected Object value;

@Transient
public Object getValue() {
    return value;
}

public void setValue(Object value) {
    this.value = value;
}

@Basic
@Column(name = "VALUEOBJECT")
public String getValueObject() {
      return value.toString();
}

無論如何我可以得到這種效果或類似的東西?

謝謝,

標記。

問題是這種轉換必須是雙向的:你必須也能夠從字符串中“解析”你的對象 - 否則你將無法獲得你的對象。 所以toString()是不夠的(但它是一個非常完美的起點)。

我認為可以通過自定義適配器解決。 即,您為此屬性編寫並配置自己的適配器。 適配器將為您的類型執行toString() / fromString(...)

這是一個問題:

http://jira.highsource.org/browse/HJIII-54

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM