2013-07-03 4 views
2

Je suis en train d'utiliser le printemps (@Autowire annotation dans JAXB Modèle classe)héritage multiple dans EclipseLink Moxy

..... 

@XmlAttribute(name = "object-id") 
@XmlSchemaType(name = "positiveInteger") 
protected BigInteger objectId; 

@XmlTransient 
@Autowired MediationCacheManager cacheManager; 

MediationCacheManager est prolongée de trois interfaces

Lors de la création de JAXBContext i attraper un exception: Exception [EclipseLink-50089] (Eclipse Persistence Services - 2.5.0.v20121116-8650760): org.eclipse.persistence.exceptions.JAXBException Exception Description: The java interface com.netcracker.mediation.common.caches.api.MediationCacheManager can not be mapped by JAXB as it has multiple mappable parent interfaces. Multiple inheritence is not supported

Bien sûr, je comprends que EclipseLink ne supporte pas l'héritage multiple, mais comment puis-je sauter cacheManager champ de JAXB En traitement? Quant à moi - il devrait être fait par XmlTransient annotation mais son pas de travail. As-tu une idée?

+0

Voir: http://stackoverflow.com/questions/17399333/xml-transient-not-working-jaxbmoxy –

Répondre

2

Le problème que vous voyez correspond à un bogue (http://bugs.eclipse.org/411993) que nous avons corrigé dans les flux EclipseLink 2.5.1 et 2.6.0. Vous pouvez télécharger une nightly build à partir du lien suivant à partir du 4 Juillet, 2013:


Contournement

Vous pouvez utiliser le document de mappage externe Moxy pour remplacer le supertype de MediationCacheManager pour faire fonctionner votre cas d'utilisation (voir: http://blog.bdoughan.com/2010/12/extending-jaxb-representing-annotations.html):

oxm.xml

<?xml version="1.0"?> 
<xml-bindings 
    xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm" 
    package-name="forum17458822"> 
    <java-types> 
     <java-type name="MediationCacheManager" super-type="java.lang.Object"/> 
    </java-types> 
</xml-bindings> 

Démo

import java.util.*; 
import javax.xml.bind.JAXBContext; 
import org.eclipse.persistence.jaxb.JAXBContextProperties; 

public class Demo { 

    public static void main(String[] args) throws Exception { 
     Map<String, Object> properties = new HashMap<String, Object>(1); 
     properties.put(JAXBContextProperties.OXM_METADATA_SOURCE, "forum17458822/oxm.xml"); 
     JAXBContext jc = JAXBContext.newInstance(new Class[] {Foo.class}, properties); 
    } 

} 
Questions connexes