Неупорядочение коллекции JAXB при использовании IDResolver не удается из-за объекта IDResolver в качестве целевого типа

У меня возникла проблема при попытке демаршалировать json из rest webservice (cxf). Я использую JAXB и EclipseLink.

Сущность отображается следующим образом:

@Entity
@Table(name = "service_pkg_service", schema = "MD")
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class ServicePkgService extends DatabaseModel implements java.io.Serializable {

    @Transient
    @XmlIDREF
    private Set channelPkgServices = new HashSet();
}

@Entity
@Table(name = "channel_pkg_service", schema = "MD")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement
public class ChannelPkgService extends DatabaseModel  implements java.io.Serializable{
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "CHANNEL_PKG_ID")
    @XmlID
    @XmlAttribute
    private String id;

}

У меня есть класс, расширяющий IDResolver, поэтому я могу сгенерировать сущность на основе ее идентификатора.

public class EntityIDResolver extends IDResolver{

@Override
public void bind(String id, Object obj) throws SAXException {
}

@SuppressWarnings({ "rawtypes", "unchecked" })
@Override
public Callable resolve(final String id, Class targetType) throws SAXException {

    }
}

У меня проблема с демаршалингом json вроде этого "channelPkgService": [1,2,3], класс targetType - java.lang.Object

Я читал это https://github.com/javaee / jaxb-v2 / issues / 546 и создал оболочку для обработки этого.

public class ChannelPkgServiceWrapper extends HashSet{
}

Так как у меня много таких случаев, и я не хочу создавать много оболочек, есть ли более общий способ справиться с этим?

Забудьте об используемых версиях:

  • cxf.version: 2.3 .6
  • eclipselink: 2.3.0
  • jaxb-impl-2.1.13.jar (jar, содержащий Lister.class, который выполняет фактическую работу по получению правильного типа.)

6
задан Peter 9 June 2017 в 01:14
поделиться