【问题标题】:HyperJaxb3 and xsd:anyTypeHyperJaxb3 和 xsd:anyType
【发布时间】:2011-03-07 06:27:38
【问题描述】:

我有一个看起来像的架构片段

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

有没有我可以得到这种效果或类似的东西?

谢谢,

标记。

【问题讨论】:

    标签: java xsd jaxb hyperjaxb


    【解决方案1】:

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

    我认为可以使用自定义适配器来解决。 IE。您为此属性编写和配置自己的适配器。然后适配器将为您的类型执行toString()/fromString(...)

    这里有个问题:

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

    【讨论】:

    • 我发布了一些打印屏幕作为对我关于 hyperjaxb3 的其他帖子的编辑。命令行显示构建成功,即使没有生成预期的 java 文件。有关于缺少库的警告,但即使在我强制重新下载 m2 存储库中的库并重试后,警告仍然存在。给出了代码中的特定行号。你愿意帮我解决这个问题吗?这是链接:stackoverflow.com/questions/25676731/…
    猜你喜欢
    • 1970-01-01
    • 2015-03-27
    • 2013-04-19
    • 1970-01-01
    • 2014-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多