Inheritance JAXB并不像预期的那样马歇尔。DTO中的对象(超类)为空

Inheritance JAXB并不像预期的那样马歇尔。DTO中的对象(超类)为空,inheritance,jboss,jaxb,cxf,data-transfer-objects,Inheritance,Jboss,Jaxb,Cxf,Data Transfer Objects,经过几个小时的反复尝试,我想在这里问问是否有人能帮我解决我的问题 情景: JavaEE服务器JBoss7.2,使用ApacheCXF作为JAX-WS实现。 ServiceA服务端点和ServiceB扩展了服务端点和服务端点 三个持久性项目:Common、PersistenceA依赖Common、PersistenceB依赖PersistenceA。 有一个类UUIDIdentified,它是所有持久性类的超类,它提供了项目中的JPA@ID 在ServiceA类中有一个方法:public List

经过几个小时的反复尝试,我想在这里问问是否有人能帮我解决我的问题

情景:

JavaEE服务器JBoss7.2,使用ApacheCXF作为JAX-WS实现。 ServiceA服务端点和ServiceB扩展了服务端点和服务端点 三个持久性项目:Common、PersistenceA依赖Common、PersistenceB依赖PersistenceA。 有一个类UUIDIdentified,它是所有持久性类的超类,它提供了项目中的JPA@ID 在ServiceA类中有一个方法:public List getDataUUIIdentified value

服务器读取一些对象,这些对象都是UUIDIIdentified的子类型,目标是将这些对象打包到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响应,我会发现标记中没有数据。我对JAXB的理解不是很好,但正如我所理解的,UUIDIIdentified的真实实例及其类型对于JAXBContext来说是未知的

我可以通过将@xmlsee{TypeA.class,TypeB.class}添加到我估计的UUIDIdentified类中来解决这个问题。但这就是我不能做的,因为如果我这样做,项目公共性将取决于项目持续性A/B

我怎样才能解决这个问题。我如何在xml配置文件中告诉JAXB它必须在添加UUIDIIdentified时向JAXBContext添加ClassA/B


我在SEI上也尝试了一些东西,比如jaxb.index文件、ObjectFactorys、@xmlsee,但我不知道这是不是正确的方法

在我尝试自行对对象进行marshal/unmarshal处理后,使用@XmlJavaTypeAdapter,我找到了问题的根源。它与JAXBContect无关。问题是我的对象是一个Hibernate Envers读取对象,如果Envers非常愿意,他们会生成代理Objectseven

因此,封送拆收器无法从代理对象中提取实际值