JAXBException при маршалинге класса с аннотациями JPA - PullRequest
3 голосов
/ 27 января 2011

Я получил следующее исключение при сортировке объектов Comment в JSON:

javax.xml.bind.JAXBException: класс javax.jdo.identity.LongIdentity, ни один из его суперкласса не известен этомуконтекст.в com.sun.xml.bind.v2.runtime.JAXBContextImpl.getBeanInfo (JAXBContextImpl.java:594) в com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType (XMLSerializer.java:648)1005 *

Ниже приведено определение комментариев, обратите внимание, что я смешал аннотации JAXB (для маршаллинга) и JPA (для персистентности с GAE).

@Entity
@XmlRootElement(name = "Comment")
@XmlAccessorType(XmlAccessType.FIELD)
public class Comment {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @XmlElement(name = "CommentId")
    private Long commentId;

    @Basic
    @XmlElement(name = "Author")
    private String author;

...
}

Чего я не понимаю, так это исключенияимеет отношение к LongIdentity?

Ответы [ 2 ]

5 голосов
/ 27 января 2011

Попробуйте аннотировать свойства вместо полей.Реализация JPA могла использовать манипулирование байтовым кодом для добавления поля типа LongIdentity.

2 голосов
/ 28 января 2011

Блейз действительно пролил свет на мой вопрос, проблема решена, и вот измененный класс Comment.

@Entity
@XmlRootElement(name = "Comment")
@XmlAccessorType(XmlAccessType.PROPERTY)
public class Comment {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @XmlElement(name = "CommentId")
    public Long getCommentId();

    @Basic
    @XmlElement(name = "Author")
    public String getAuthor();

...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...