1

XSD から POJO を生成するために JAXB を使用しています。何らかの理由により、生成された POJO にはJAXBElement<CustomObject>as プロパティがあります。

public class ResponsePackageType{

   protected JAXBElement<? extends ResponseType> response;
   ....
}

複数のクラスが拡張されてResponseTypeいますが、私はその 1 つのタイプのみをマップすることに関心があり、Orika はこのプロパティを認識するのに問題があります。

私のコード:

JAXBElement<ResponsePackageType> feed = (JAXBElement<ResponsePackageType>) unmarshaller.unmarshal(new FileInputStream( "input.xml" ));

MapperFactory mapperFactory = new DefaultMapperFactory.Builder().build();

Type<JAXBElement<ResponsePackageType>> respPackageType = new TypeBuilder<JAXBElement<ResponsePackageType>>(){}.build();

Type<JAXBElement<SpecialResponseType>> spRespType = new TypeBuilder<JAXBElement<SpecialResponseType>>(){}.build();

mapperFactory.classMap(respPackageType, respPackageType)
        .fieldMap("response", "response")
        .aElementType(spRespType )
        .bElementType(spRespType )
        .add()
        .byDefault().register();

MapperFacade mapper = mapperFactory.getMapperFacade();

mapper.map(feed, objectFactory.createResponsePackage(null));

例外:

Exception in thread "main" java.lang.ClassCastException: sun.reflect.generics.reflectiveObjects.TypeVariableImpl cannot be cast to java.lang.Class
    at ma.glasnost.orika.constructor.ConstructorParameterResolver.getProperties(ConstructorParameterResolver.java:73)
    at ma.glasnost.orika.constructor.ConstructorParameterResolver.getPossibleConstructorParams(ConstructorParameterResolver.java:119)
    at ma.glasnost.orika.property.PropertyResolver.resolveConstructorProperty(PropertyResolver.java:701)
    at ma.glasnost.orika.property.PropertyResolver.getProperty(PropertyResolver.java:686)
    at ma.glasnost.orika.property.PropertyResolver.getProperty(PropertyResolver.java:616)
    at ma.glasnost.orika.metadata.ClassMapBuilder.resolveProperty(ClassMapBuilder.java:828)
    at ma.glasnost.orika.metadata.ClassMapBuilder.resolvePropertyForA(ClassMapBuilder.java:838)
    at ma.glasnost.orika.metadata.ClassMapBuilder.fieldMap(ClassMapBuilder.java:379)

この問題を解決するにはどうすればよいですか?? propertyResolverStrategy を使用する必要がありますか?

4

0 に答える 0