JAXB работает с JPA, скинуть IllegalAnnotationsException - PullRequest
1 голос
/ 21 марта 2011

Я был сложен в этом месте в течение нескольких дней. любая помощь будет оценена.

Вот моя история: У меня есть класс сущностей JPA (ExtOffer), и теперь я аннотирую его аннотацией JAXB, чтобы выполнить маршалл / демаршалл JAXB. И я также создаю класс-оболочку (ExtOffers), который в основном является коллекцией ExtOffer. И когда я вызываю JAXBContext.newInstance (ExtOffers.class), я получаю исключение IllegalAnnotationsException: JAXB помещается в метод, который не является свойством JAXB.

Я ищу в Google, и в некоторых сообщениях говорится, что это связано с аннотацией @XmlElement в неправильном месте. Но у моего класса есть аннотация @XmlAccessorType (XmlAccessType.NONE), и только метод get был аннотирован @Xmlelement.

ниже мой класс ExtOffer и класс ExtOffers:

// ExtOffer:

@Entity
@Table (name = "extoffer")
@XmlType(name = "ExtOfferType")
@XmlAccessorType(XmlAccessType.NONE)
public class ExtOffer {
    public ExtOffer() {
    }
        @Id
    @Column(name = "OfferID", nullable = false, unique = true, length = 32)
    protected String offerId;

    @Column(name = "HasMoreScreenShot", nullable = false, unique = false, length = 1)
    private String hasMoreScreenShot;

        public void setOfferId(String offerId) {
        this.offerId = offerId;
    }

    @XmlElement(name="OfferID", required = true)
    public String getOfferId() {
        return offerId;
    }

        public void setHasMoreScreenShot(String hasMoreScreenShot) {
        this.hasMoreScreenShot= hasMoreScreenShot;
    }

    @XmlElement(name = "HasMoreScreenShot")
    public String GetHasMoreScreenShot() {
        return hasMoreScreenShot;
    }
}

// Оболочка ExtOffers

@XmlRootElement(name="extoffers")
@XmlAccessorType(XmlAccessType.NONE)
public class ExtOfferWrapper {


    private List<ExtOffer> extoffers;

    public ExtOfferWrapper() {

    }

    @XmlElement(name="extoffer")
    public List<ExtOffer> getExtoffers() {
        return extoffers;
    }

    public void setExtoffers(List<ExtOffer> extoffers) {
        this.extoffers = extoffers;
    }
}

JAXB annotation is placed on a method that is not a JAXB property
    this problem is related to the following location:
        at @javax.xml.bind.annotation.XmlElement(nillable=false, name=HasMoreScreenShot, required=false, defaultValue=, type=class javax.xml.bind.annotation.XmlElement$DEFAULT, namespace=##default)
        at com.symbio.fuhu.appstore.jpa.entity.ExtOffer
        at public java.util.List com.symbio.fuhu.appstore.jaxb.mapping.wrapper.ExtOfferWrapper.getExtoffers()
        at com.symbio.fuhu.appstore.jaxb.mapping.wrapper.ExtOfferWrapper

1 Ответ

3 голосов
/ 21 марта 2011

У вас есть заглавные буквы 'G'

@XmlElement(name = "HasMoreScreenShot")
public String GetHasMoreScreenShot() {
    return hasMoreScreenShot;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...