5

次のようなスキーマフラグメントがあります

<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文字列にマーシャリング解除でき、結果の文字列が永続化されると想定しています。私の場合、これは正しくありませんが、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();
}

とにかく私はこの効果または同様のものを得ることができますか?

ありがとう、

マーク。

4

1 に答える 1

0

問題は、この変換が双方向でなければならないことです。文字列からオブジェクトを「解析」できる必要があります。そうしないと、オブジェクトが返されません。だからtoString()十分ではありません(しかし、それは始めるのにとても完璧な場所です)。

カスタムアダプタで解決できると思います。つまり、このプロパティ用に独自のアダプタを作成して構成します。アダプターはそれからtoString()/fromString(...)あなたのタイプのために行います。

ここに問題があります:

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

于 2010-07-06T08:05:04.367 に答える