2016-02-17 2 views
0

У меня есть проблема с использованием Moxy для преобразования строки JSON в объект XML. Вот исключение я получаю, когда я делаю это преобразование:EclipseLink: «Отсутствует класс для значения поля индикатора» без наследования

Exception [EclipseLink-43] (Eclipse Persistence Services - 2.6.2.v20151217-774c696): org.eclipse.persistence.exceptions.DescriptorException 
Exception Description: Missing class for indicator field value [TENANT] of type [class java.lang.String]. 
Descriptor: XMLDescriptor(fr.niji.nates.webservices.macd.ws.COMPONENTTYPE --> []) 
    at org.eclipse.persistence.exceptions.DescriptorException.missingClassForIndicatorFieldValue(DescriptorException.java:940) 
    at org.eclipse.persistence.internal.oxm.QNameInheritancePolicy.classFromRow(QNameInheritancePolicy.java:278) 
[...] 

Вот класс ComponentType:

import javax.xml.bind.annotation.XmlAccessType; 
import javax.xml.bind.annotation.XmlAccessorType; 
import javax.xml.bind.annotation.XmlAttribute; 
import javax.xml.bind.annotation.XmlSeeAlso; 
import javax.xml.bind.annotation.XmlType; 

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "COMPONENT_TYPE") 
@XmlSeeAlso({ 
    COMPONENTDETAILTYPE.class, 
    MACDRESULTTYPE.Created.class 
}) 
public class COMPONENTTYPE { 

    @XmlAttribute(name = "type", required = true) 
    protected String type; 
    @XmlAttribute(name = "dbid", required = true) 
    protected int dbid; 

    public String getType() { 
     return type; 
    } 

    public void setType(String value) { 
     this.type = value; 
    } 

    public int getDbid() { 
     return dbid; 
    } 

    public void setDbid(int value) { 
     this.dbid = value; 
    } 
} 

Проблема, кажется, только на атрибут «тип».

У кого-нибудь есть идеи? Спасибо,

+0

Атрибут @type используется для «classIndicatorField». Таким образом, в методе QNameInheritancePolicy.classFromRow указатель 'lineObject = rowFromDatabase.get (getClassIndicatorField()); возвращает результат вместо «null» ... Есть ли решение игнорировать это? – user2096168

ответ

0

Решение, которое я нашел, чтобы добавить аннотацию @XmlDiscriminatorNode к классу:

import javax.xml.bind.annotation.XmlAccessType; 
import javax.xml.bind.annotation.XmlAccessorType; 
import javax.xml.bind.annotation.XmlAttribute; 
import javax.xml.bind.annotation.XmlSeeAlso; 
import javax.xml.bind.annotation.XmlType; 

import org.eclipse.persistence.oxm.annotations.XmlDiscriminatorNode; 

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "COMPONENT_TYPE") 
@XmlSeeAlso({ 
    COMPONENTDETAILTYPE.class, 
    fr.niji.nates.webservices.macd.ws.MACDRESULTTYPE.Created.class 
}) 
@XmlDiscriminatorNode("@@type") 
public class COMPONENTTYPE { 
    [...] 
Смежные вопросы