gpt4 book ai didi

java - HyperJaxb3 和 xsd :anyType

转载 作者:搜寻专家 更新时间:2023-11-01 00:58:31 24 4
gpt4 key购买 nike

我有一个模式片段看起来像

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

无论如何我可以获得这种效果或类似的效果吗?

谢谢,

标记。

最佳答案

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

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

这里有一个问题:

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

关于java - HyperJaxb3 和 xsd :anyType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3100951/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com