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;
    }
}

我知道休眠将难以持久化纯对象,因此 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 回答