我有一个模式片段,如下所示
<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();
}有没有什么办法可以让我得到这样的效果或类似的效果?
谢谢,
马克。
发布于 2010-07-06 16:05:04
问题是这种转换必须是双向的:你还必须能够从字符串中“解析”回你的对象-否则你将得不到你的对象。所以toString()是不够的(但它是一个很好的起点)。
我认为这可以通过定制适配器来解决。即,您可以为该属性编写和配置自己的适配器。然后,适配器将为您的类型执行toString()/fromString(...)。
这里有一个问题:
http://jira.highsource.org/browse/HJIII-54
https://stackoverflow.com/questions/3100951
复制相似问题