Json un geri kalanını webservice (cxf) 'den kaldırmaya çalışırken bu sorunu yaşıyorum. JAXB ve EclipseLink kullanıyorum.IDResolver başarısız olduğunda JAXB koleksiyonu IDResolver nesne olarak hedef türü olarak belirtiliyor
@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<ChannelPkgService> channelPkgServices = new HashSet<ChannelPkgService>();
}
@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;
}
I IDResolver uzanan bir sınıf olması, bu yüzden kendi kimliği dayalı bir varlık oluşturabilir:
işletme böyle eşleştirilir.
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 {
}
}
Sorunu bu "channelPkgService" gibi json unmarshalling vardır: [1,2,3] TARGETTYPE sınıfı, bu https://github.com/javaee/jaxb-v2/issues/546 oku java.lang.Object
ve bir sarıcı oluşturulan Bunu hallet.
public class ChannelPkgServiceWrapper extends HashSet<ChannelPkgService>{
}
SINES ben bu gibi durumlarda bir sürü var ve ben sarmalayıcıları bir sürü oluşturmak istemiyoruz, bu işlemek için daha genel bir yol var?
Forget kullanılabilmekte:
- cxf.version: 2.3.6
- EclipseLink: 2.3.0
- JAXB-impl-2.1.13.jar (kavanoz içeren Lister.class bu doğru türü almak için fiili işi yapıyor.)