经过几个小时的尝试和错误,我想在这里询问是否有人可以帮助我解决我的问题。
情景:
UUIDIdentified
是所有持久化类的超类(它提供了JPA @ID
)它在Projekt Common中在ServiceA类中有一个方法:public List<DTO> getData(UUIDIdentified value);
服务器读取一些对象,这些对象都是UUIDIdentified的子类型,目标是在DTO中打包对象。
DTO看起来像:
@XmlAccessorType(XmlAccessType.FIELD)
public class DTO{
private static final long serialVersionUID = 1L;
@XmlElement(name = "uuididentified")
UUIDIdentified object;
public UUIDIdentified getObject() {
return object;
}
public void setObject(final UUIDIdentified object) {
this.object = object;
}
}
如果我查看SOAP响应,我发现<uuididentified>
标记中没有数据。我对JAXB的理解不是很好,但据我所知,UUIDIdentified的“真实”实例及其类型对于JAXBContext是未知的。
我可以通过将@XmlSeeAlso({TypeA.class,TypeB.class})
添加到UUIDIdentified
类来解决此问题(我估计)。但这是我不能理解的,因为如果我这样做,Project Common将取决于Projects PersistenceA / B.
我该如何解决这个问题。我怎么能对JAXB(可能在xml配置文件中)说它必须在JAXBContext中添加ClassA / B,因为它添加了UUIDIdentified?
我在SEI上尝试了一些像jaxb.index文件,ObjectFactorys,@ XmlSeeAlso这样的东西,但我不知道这是不是正确的方法。
答案 0 :(得分:0)
在我试图通过我自己编组/解组对象后,@XmlJavaTypeAdapter
我遇到了问题的根源。这与JAXBContect没有任何关系。问题是我的对象是一个Hibernate-Envers读取对象,并且envers生成代理对象(即使它们是EAGER)。
因此,编组程序无法从Proxy对象中提取实际值。