首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HyperJaxb3和xsd:anyType

HyperJaxb3和xsd:anyType
EN

Stack Overflow用户
提问于 2010-06-23 18:52:53
回答 1查看 627关注 0票数 5

我有一个模式片段,如下所示

代码语言:javascript
复制
<xs:element name="dataValue">
        <xs:complexType>
            <xs:sequence>           
                <xs:element name="value" type="xs:anyType"\>
            </xs:sequence>
        </xs:complexType>
</xs:element>

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

代码语言:javascript
复制
@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()方法将返回一些有用的东西。我希望生成的代码看起来更像:

代码语言:javascript
复制
@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();
}

有没有什么办法可以让我得到这样的效果或类似的效果?

谢谢,

马克。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-07-06 16:05:04

问题是这种转换必须是双向的:你还必须能够从字符串中“解析”回你的对象-否则你将得不到你的对象。所以toString()是不够的(但它是一个很好的起点)。

我认为这可以通过定制适配器来解决。即,您可以为该属性编写和配置自己的适配器。然后,适配器将为您的类型执行toString()/fromString(...)

这里有一个问题:

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3100951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档