Muhtemelen üst sınıfta @XmlSeeAlso
ek açıklama kullanmak gerekir:
@XmlSeeAlso(B.class)
@XmlRootElement(name = "a")
@XmlAccessorType(XmlAccessType.FIELD)
public abstract class A{
Ben muhtemelen 'yazdım, sizin JAXB bağlamı kurarım bağlıdır çünkü. Temel olarak, serileştirilmesi gereken tüm sınıfların JAXB tarafından bilindiğinden emin olmanız gerekir. B
sınıfınız başka bir yerde (örneğin, zaten JAXB tarafından bilinen sınıfların özellik tipi olarak) belirtilmemişse, JAXB, B
örneklerini nasıl serileştireceğini bilme şansına sahip değildir. @XmlSeeAlso
notasının amacı, JAXB'nin listelenen bu sınıflara da baktığından emin olmaktır.
GÜNCELLEME:
JAXBContext.newInstance(A.class, B.class);
yerine
JAXBContext.newInstance(A.class);
hangi muhtemelen: JAXBContext.newInstance(Class...)
kullanarak JAXBContext
nesneyi oluştururken
Alternatif örneğin tüm alt sınıflar listesini sağlayabilir yap.
Ancak, bence bu daha kötü bir çözümdür, çünkü JAXB'yi kodunuzda her kullandığınızda ilgili sınıfları düşünmenizi sağlar. En iyi çözümde ilişkileri sonsuza kadar bir kez ayarlarsınız.
Ve elbette alıcılar/ayarlayıcılarım var. – Udi