在过去的几天里,我尝试使用MOXy JAXB来支持Hibernate模型的XML编组/解组.试图这样做,我遇到了hibernates代理对象的问题.考虑类似的事情:
public class User {
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "address")
public Address getAddress() {
return address;
}
}
public abstract class Address {
// Something
}
public class CoolAddress extends Address {
public String getSomething() {
return something;
}
}
Run Code Online (Sandbox Code Playgroud)
我试图使用MOXy JAXB以下列方式映射此代码:
@XmlAccessorType(XmlAccessType.NONE)
public class User {
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "address")
@XmlElement
public Address getAddress() {
return address;
}
}
@XmlAccessorType(XmlAccessType.NONE)
@XmlSeeAlso(CoolAddress.class)
public abstract class Address {
// Something
}
@XmlAccessorType(XmlAccessType.NONE)
public class CoolAddress extends Address …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用MOXy JAXB来序列化类A,它看起来像:
@XmlAccessorType(XmlAccessType.NONE)
@XmlRootElement
public class A {
private Map<Foo, Bar> fooBar = new HashMap<Foo, Bar>();
private Set<Foo> foos = new HashSet<Foo>();
@XmlJavaTypeAdapter(FooBarMapAdapter.class)
public Map<Foo, Bar> getFooBar() {
return fooBar;
}
public void setFooBar(Map<Foo, Bar> fooBar) {
this.fooBar = fooBar;
}
@XmlElement
public Set<Foo> getFoos() {
return foos;
}
public void setFoos(Set<Foo> foos) {
this.foos = foos;
}
}
Run Code Online (Sandbox Code Playgroud)
关键是"foos"字段中的Foo对象是fooBar映射中的Foo对象的超集.因此,我想将"fooBar"映射的关键元素"链接"到"foos"列表中的相应元素.我使用XmlID和XmlIDREF注释尝试了这个:
@XmlAccessorType(XmlAccessType.NONE)
public class Foo {
private String xmlId;
@XmlID
@XmlAttribute
public String getXmlId() {
return xmlId;
}
public void setXmlId(String …Run Code Online (Sandbox Code Playgroud)